diff --git a/WATCHLISTS b/WATCHLISTS
index 7b3e284..a119385 100644
--- a/WATCHLISTS
+++ b/WATCHLISTS
@@ -1889,7 +1889,10 @@
     'gn': ['agrieve+watch@chromium.org',
            'dpranke@chromium.org',
            'tfarina@chromium.org'],
-    'goma': ['goma+cc@google.com'],
+    'goma': ['shinyak+cc@chromium.com',
+             'tikuta+cc@chromium.com',
+             'ukai+cc@chromium.com',
+             'yyanagisawa+cc@chromium.com'],
     'gpu': ['piman+watch@chromium.org'],
     'history_ui': ['dbeam+watch-history@chromium.org',
                    'dubroy@chromium.org',
diff --git a/base/memory/memory_coordinator_proxy.cc b/base/memory/memory_coordinator_proxy.cc
index 24b6d66655..59c7a6a 100644
--- a/base/memory/memory_coordinator_proxy.cc
+++ b/base/memory/memory_coordinator_proxy.cc
@@ -6,36 +6,40 @@
 
 namespace base {
 
+namespace {
+
+MemoryCoordinator* g_memory_coordinator = nullptr;
+
+}  // namespace
+
 MemoryCoordinatorProxy::MemoryCoordinatorProxy() {
 }
 
 MemoryCoordinatorProxy::~MemoryCoordinatorProxy() {
 }
 
+// static
 MemoryCoordinatorProxy* MemoryCoordinatorProxy::GetInstance() {
   return Singleton<base::MemoryCoordinatorProxy>::get();
 }
 
+// static
+void MemoryCoordinatorProxy::SetMemoryCoordinator(
+    MemoryCoordinator* coordinator) {
+  DCHECK(!g_memory_coordinator);
+  g_memory_coordinator = coordinator;
+}
+
 MemoryState MemoryCoordinatorProxy::GetCurrentMemoryState() const {
-  if (!getter_callback_)
+  if (!g_memory_coordinator)
     return MemoryState::NORMAL;
-  return getter_callback_.Run();
+  return g_memory_coordinator->GetCurrentMemoryState();
 }
 
 void MemoryCoordinatorProxy::SetCurrentMemoryStateForTesting(
     MemoryState memory_state) {
-  DCHECK(setter_callback_);
-  setter_callback_.Run(memory_state);
-}
-
-void MemoryCoordinatorProxy::SetGetCurrentMemoryStateCallback(
-    GetCurrentMemoryStateCallback callback) {
-  getter_callback_ = callback;
-}
-
-void MemoryCoordinatorProxy::SetSetCurrentMemoryStateForTestingCallback(
-    SetCurrentMemoryStateCallback callback) {
-  setter_callback_ = callback;
+  DCHECK(g_memory_coordinator);
+  g_memory_coordinator->SetCurrentMemoryStateForTesting(memory_state);
 }
 
 }  // namespace base
diff --git a/base/memory/memory_coordinator_proxy.h b/base/memory/memory_coordinator_proxy.h
index 4148da5d..036f126 100644
--- a/base/memory/memory_coordinator_proxy.h
+++ b/base/memory/memory_coordinator_proxy.h
@@ -12,37 +12,39 @@
 
 namespace base {
 
+// The MemoryCoordinator interface. See comments in MemoryCoordinatorProxy for
+// method descriptions.
+class BASE_EXPORT MemoryCoordinator {
+ public:
+  virtual ~MemoryCoordinator() {}
+
+  virtual MemoryState GetCurrentMemoryState() const = 0;
+  virtual void SetCurrentMemoryStateForTesting(MemoryState memory_state) = 0;
+};
+
 // The proxy of MemoryCoordinator to be accessed from components that are not
 // in content/browser e.g. net.
 class BASE_EXPORT MemoryCoordinatorProxy {
  public:
-  using GetCurrentMemoryStateCallback = base::Callback<MemoryState()>;
-  using SetCurrentMemoryStateCallback = base::Callback<void(MemoryState)>;
-
   static MemoryCoordinatorProxy* GetInstance();
 
+  // Sets an implementation of MemoryCoordinator. MemoryCoordinatorProxy doesn't
+  // take the ownership of |coordinator|. It must outlive this proxy.
+  // This should be called before any components starts using this proxy.
+  static void SetMemoryCoordinator(MemoryCoordinator* coordinator);
+
   // Returns the current memory state.
   MemoryState GetCurrentMemoryState() const;
 
   // Sets the current memory state. This function is for testing only.
   void SetCurrentMemoryStateForTesting(MemoryState memory_state);
 
-  // Sets state-getter callback.
-  void SetGetCurrentMemoryStateCallback(GetCurrentMemoryStateCallback callback);
-
-  // Sets state-setter callback.
-  void SetSetCurrentMemoryStateForTestingCallback(
-      SetCurrentMemoryStateCallback callback);
-
  private:
   friend struct base::DefaultSingletonTraits<MemoryCoordinatorProxy>;
 
   MemoryCoordinatorProxy();
   virtual ~MemoryCoordinatorProxy();
 
-  GetCurrentMemoryStateCallback getter_callback_;
-  SetCurrentMemoryStateCallback setter_callback_;
-
   DISALLOW_COPY_AND_ASSIGN(MemoryCoordinatorProxy);
 };
 
diff --git a/build/android/play_services/config.json b/build/android/play_services/config.json
index d359f9f..d9a1e81 100644
--- a/build/android/play_services/config.json
+++ b/build/android/play_services/config.json
@@ -11,6 +11,6 @@
     "play-services-nearby",
     "play-services-vision"
   ],
-  "version_number": "10.0.1",
+  "version_number": "10.2.0",
   "version_xml_path": "res/values/version.xml"
 }
diff --git a/build/android/play_services/google_play_services_library.zip.sha1 b/build/android/play_services/google_play_services_library.zip.sha1
index 850a4fd..70df3c6 100644
--- a/build/android/play_services/google_play_services_library.zip.sha1
+++ b/build/android/play_services/google_play_services_library.zip.sha1
@@ -1 +1 @@
-3e54555b12aa48593a31a89c6239ec35520e4477
\ No newline at end of file
+7bef387dc3f3fa6fb62d29f26fd18814b3d51ecf
\ No newline at end of file
diff --git a/build/secondary/third_party/android_tools/BUILD.gn b/build/secondary/third_party/android_tools/BUILD.gn
index bd899243..cbd58b2cf 100644
--- a/build/secondary/third_party/android_tools/BUILD.gn
+++ b/build/secondary/third_party/android_tools/BUILD.gn
@@ -186,7 +186,7 @@
 
 # TODO(dgn): Use the POM files instead of hardcoding the dependencies.
 gms_path = "$default_extras_android_sdk_root/extras/google/m2repository/com/google/android/gms"
-gms_version = "10.0.1"
+gms_version = "10.2.0"
 
 android_aar_prebuilt("google_play_services_basement_java") {
   deps = [
diff --git a/chrome/VERSION b/chrome/VERSION
index b8a160ca..877af05 100644
--- a/chrome/VERSION
+++ b/chrome/VERSION
@@ -1,4 +1,4 @@
 MAJOR=58
 MINOR=0
-BUILD=3018
+BUILD=3019
 PATCH=0
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeApplication.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeApplication.java
index 17120e87..f4be47b 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeApplication.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeApplication.java
@@ -59,6 +59,7 @@
 import org.chromium.chrome.browser.tabmodel.document.DocumentTabModelSelector;
 import org.chromium.chrome.browser.tabmodel.document.StorageDelegate;
 import org.chromium.chrome.browser.tabmodel.document.TabDelegate;
+import org.chromium.chrome.browser.webapps.ChromeShortcutManager;
 import org.chromium.chrome.browser.webapps.GooglePlayWebApkInstallDelegate;
 import org.chromium.components.signin.AccountManagerDelegate;
 import org.chromium.components.signin.SystemAccountManagerDelegate;
@@ -396,6 +397,11 @@
         return null;
     }
 
+    /** Returns the singleton instance of ChromeShortcutManager */
+    public ChromeShortcutManager createChromeShortcutManager() {
+        return new ChromeShortcutManager();
+    }
+
     /**
      * Returns the singleton instance of the DocumentTabModelSelector.
      * TODO(dfalcantara): Find a better place for this once we differentiate between activity and
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
index 10cb908..7295363 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
@@ -566,6 +566,8 @@
             }
             if (mVrShellDelegate.isDaydreamVrIntent(intent)) {
                 mVrShellDelegate.enterVRFromIntent(intent);
+            } else if (ShortcutHelper.isShowToastIntent(intent)) {
+                ShortcutHelper.showAddedToHomescreenToastFromIntent(intent);
             }
         } finally {
             TraceEvent.end("ChromeTabbedActivity.onNewIntentWithNative");
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ShortcutHelper.java b/chrome/android/java/src/org/chromium/chrome/browser/ShortcutHelper.java
index c8356b73..dac0669 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/ShortcutHelper.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ShortcutHelper.java
@@ -4,7 +4,6 @@
 
 package org.chromium.chrome.browser;
 
-import android.annotation.SuppressLint;
 import android.app.ActivityManager;
 import android.content.Context;
 import android.content.Intent;
@@ -12,7 +11,6 @@
 import android.content.pm.PackageInfo;
 import android.content.pm.PackageManager;
 import android.content.pm.PackageManager.NameNotFoundException;
-import android.content.pm.ResolveInfo;
 import android.graphics.Bitmap;
 import android.graphics.BitmapFactory;
 import android.graphics.Canvas;
@@ -35,6 +33,8 @@
 import org.chromium.base.annotations.CalledByNative;
 import org.chromium.blink_public.platform.WebDisplayMode;
 import org.chromium.chrome.R;
+import org.chromium.chrome.browser.util.IntentUtils;
+import org.chromium.chrome.browser.webapps.ChromeShortcutManager;
 import org.chromium.chrome.browser.webapps.ChromeWebApkHost;
 import org.chromium.chrome.browser.webapps.WebApkInfo;
 import org.chromium.chrome.browser.webapps.WebappActivity;
@@ -60,7 +60,7 @@
     public static final String EXTRA_ICON = "org.chromium.chrome.browser.webapp_icon";
     public static final String EXTRA_ID = "org.chromium.chrome.browser.webapp_id";
     public static final String EXTRA_MAC = "org.chromium.chrome.browser.webapp_mac";
-    // EXTRA_TITLE is present for backward compatibility reasons
+    // EXTRA_TITLE is present for backward compatibility reasons.
     public static final String EXTRA_TITLE = "org.chromium.chrome.browser.webapp_title";
     public static final String EXTRA_NAME = "org.chromium.chrome.browser.webapp_name";
     public static final String EXTRA_SHORT_NAME = "org.chromium.chrome.browser.webapp_short_name";
@@ -82,6 +82,10 @@
     public static final String EXTRA_WEBAPK_PACKAGE_NAME =
             "org.chromium.chrome.browser.webapk_package_name";
 
+    /** Used for the callback intent when using the new shortcut API. */
+    public static final String SHORTCUT_TOAST_CATEGORY =
+            "com.google.intent.category.SHORTCUT_TOAST";
+
     // When a new field is added to the intent, this version should be incremented so that it will
     // be correctly populated into the WebappRegistry/WebappDataStorage.
     public static final int WEBAPP_SHORTCUT_VERSION = 2;
@@ -91,10 +95,6 @@
 
     private static final String TAG = "ShortcutHelper";
 
-    // There is no public string defining this intent so if Home changes the value, we
-    // have to update this string.
-    private static final String INSTALL_SHORTCUT = "com.android.launcher.action.INSTALL_SHORTCUT";
-
     // The activity class used for launching a WebApk.
     private static final String WEBAPK_MAIN_ACTIVITY = "org.chromium.webapk.shell_apk.MainActivity";
 
@@ -106,15 +106,17 @@
     private static final float GENERATED_ICON_PADDING_RATIO = 1.0f / 12.0f;
     private static final float GENERATED_ICON_FONT_SIZE_RATIO = 1.0f / 3.0f;
 
-    /** Broadcasts Intents out Android for adding the shortcut. */
+    /** Helper for generating home screen shortcuts. */
     public static class Delegate {
         /**
-         * Broadcasts an intent to all interested BroadcastReceivers.
-         * @param context The Context to use.
-         * @param intent The intent to broadcast.
+         * Request Android to add a shortcut to the home screen.
+         * @param title  Title of the shortcut.
+         * @param icon   Image that represents the shortcut.
+         * @param intent Intent to fire when the shortcut is activated.
          */
-        public void sendBroadcast(Context context, Intent intent) {
-            context.sendBroadcast(intent);
+        public void addShortcutToHomescreen(String title, Bitmap icon, Intent shortcutIntent) {
+            ChromeShortcutManager.getInstance().addShortcutToHomeScreen(
+                    title, icon, shortcutIntent);
         }
 
         /**
@@ -165,9 +167,7 @@
             }
             @Override
             protected void onPostExecute(final Intent resultIntent) {
-                Context context = ContextUtils.getApplicationContext();
-                sDelegate.sendBroadcast(
-                        context, createAddToHomeIntent(userTitle, icon, resultIntent));
+                sDelegate.addShortcutToHomescreen(userTitle, icon, resultIntent);
 
                 // Store the webapp data so that it is accessible without the intent. Once this
                 // process is complete, call back to native code to start the splash image
@@ -180,8 +180,9 @@
                                 nativeOnWebappDataStored(callbackPointer);
                             }
                         });
-
-                showAddedToHomescreenToast(userTitle);
+                if (ChromeShortcutManager.getInstance().shouldShowToastWhenAddingShortcut()) {
+                    showAddedToHomescreenToast(userTitle);
+                }
             }
         }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
     }
@@ -198,7 +199,8 @@
             Intent i = new Intent();
             i.setClassName(packageName, WEBAPK_MAIN_ACTIVITY);
             i.addCategory(Intent.CATEGORY_LAUNCHER);
-            context.sendBroadcast(createAddToHomeIntent(shortcutTitle, bitmap, i));
+            context.sendBroadcast(
+                    ChromeShortcutManager.createAddToHomeIntent(shortcutTitle, bitmap, i));
         } catch (NameNotFoundException e) {
             e.printStackTrace();
         }
@@ -209,14 +211,17 @@
      */
     @SuppressWarnings("unused")
     @CalledByNative
-    private static void addShortcut(String url, String userTitle, Bitmap icon, int source) {
+    private static void addShortcut(
+            String id, String url, String userTitle, Bitmap icon, int source) {
         Context context = ContextUtils.getApplicationContext();
         final Intent shortcutIntent = createShortcutIntent(url);
+        shortcutIntent.putExtra(EXTRA_ID, id);
         shortcutIntent.putExtra(EXTRA_SOURCE, source);
         shortcutIntent.setPackage(context.getPackageName());
-        sDelegate.sendBroadcast(
-                context, createAddToHomeIntent(userTitle, icon, shortcutIntent));
-        showAddedToHomescreenToast(userTitle);
+        sDelegate.addShortcutToHomescreen(userTitle, icon, shortcutIntent);
+        if (ChromeShortcutManager.getInstance().shouldShowToastWhenAddingShortcut()) {
+            showAddedToHomescreenToast(userTitle);
+        }
     }
 
     /**
@@ -229,6 +234,24 @@
     }
 
     /**
+     * Show toast when getting the callback intent by the launcher after adding shortcut by using
+     * the new shortcut API.
+     */
+    public static void showAddedToHomescreenToastFromIntent(Intent intent) {
+        String title = IntentUtils.safeGetStringExtra(intent, Intent.EXTRA_SHORTCUT_NAME);
+        showAddedToHomescreenToast(title);
+    }
+
+    /**
+     * Determine if it is a callback intent (which requests for a show-toast), used in the new
+     * shortcut API.
+     */
+    public static boolean isShowToastIntent(Intent intent) {
+        if (intent == null || intent.getCategories() == null) return false;
+        return intent.getCategories().contains(SHORTCUT_TOAST_CATEGORY);
+    }
+
+    /**
      * Shows toast notifying user that a WebAPK install is already in progress when user tries to
      * queue a new install for the same WebAPK.
      */
@@ -273,22 +296,6 @@
     }
 
     /**
-     * Creates an intent that will add a shortcut to the home screen.
-     * @param title Title of the shortcut.
-     * @param icon Image that represents the shortcut.
-     * @param shortcutIntent Intent to fire when the shortcut is activated.
-     * @return Intent for the shortcut.
-     */
-    public static Intent createAddToHomeIntent(String title, Bitmap icon,
-            Intent shortcutIntent) {
-        Intent i = new Intent(INSTALL_SHORTCUT);
-        i.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
-        i.putExtra(Intent.EXTRA_SHORTCUT_NAME, title);
-        i.putExtra(Intent.EXTRA_SHORTCUT_ICON, icon);
-        return i;
-    }
-
-    /**
      * Creates a shortcut to launch a web app on the home screen.
      * @param id              Id of the web app.
      * @param action          Intent action to open a full screen activity.
@@ -358,22 +365,15 @@
 
     /**
      * Utility method to check if a shortcut can be added to the home screen.
-     * @param context Context used to get the package manager.
      * @return if a shortcut can be added to the home screen under the current profile.
      */
-    // TODO(crbug.com/635567): Fix this properly.
-    @SuppressLint("WrongConstant")
-    public static boolean isAddToHomeIntentSupported(Context context) {
-        PackageManager pm = context.getPackageManager();
-        Intent i = new Intent(INSTALL_SHORTCUT);
-        List<ResolveInfo> receivers = pm.queryBroadcastReceivers(
-                i, PackageManager.GET_INTENT_FILTERS);
-        return !receivers.isEmpty();
+    public static boolean isAddToHomeIntentSupported() {
+        return ChromeShortcutManager.getInstance().canAddShortcutToHomescreen();
     }
 
     /**
      * Returns whether the given icon matches the size requirements to be used on the home screen.
-     * @param width Icon width, in pixels.
+     * @param width  Icon width, in pixels.
      * @param height Icon height, in pixels.
      * @return whether the given icon matches the size requirements to be used on the home screen.
      */
@@ -436,10 +436,10 @@
      * Generates a generic icon to be used in the launcher. This is just a rounded rectangle with
      * a letter in the middle taken from the website's domain name.
      *
-     * @param url URL of the shortcut.
-     * @param red Red component of the dominant icon color.
+     * @param url   URL of the shortcut.
+     * @param red   Red component of the dominant icon color.
      * @param green Green component of the dominant icon color.
-     * @param blue Blue component of the dominant icon color.
+     * @param blue  Blue component of the dominant icon color.
      * @return Bitmap Either the touch-icon or the newly created favicon.
      */
     @CalledByNative
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuPropertiesDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuPropertiesDelegate.java
index d72051fd..040ceaa 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuPropertiesDelegate.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuPropertiesDelegate.java
@@ -163,7 +163,7 @@
             //                is not persisted when adding to the homescreen.
             // * If creating shortcuts it not supported by the current home screen.
             MenuItem homescreenItem = menu.findItem(R.id.add_to_homescreen_id);
-            boolean homescreenItemVisible = ShortcutHelper.isAddToHomeIntentSupported(mActivity)
+            boolean homescreenItemVisible = ShortcutHelper.isAddToHomeIntentSupported()
                     && !isChromeScheme && !isFileScheme && !isContentScheme && !isIncognito;
             if (homescreenItemVisible) {
                 homescreenItem.setTitle(AppBannerManager.getHomescreenLanguageOption());
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/banners/AppBannerManager.java b/chrome/android/java/src/org/chromium/chrome/browser/banners/AppBannerManager.java
index 8aa2d7b..1f76edae 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/banners/AppBannerManager.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/banners/AppBannerManager.java
@@ -44,8 +44,7 @@
      */
     public static boolean isSupported() {
         if (sIsSupported == null) {
-            Context context = ContextUtils.getApplicationContext();
-            sIsSupported = ShortcutHelper.isAddToHomeIntentSupported(context);
+            sIsSupported = ShortcutHelper.isAddToHomeIntentSupported();
         }
         return sIsSupported;
     }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/webapps/ChromeShortcutManager.java b/chrome/android/java/src/org/chromium/chrome/browser/webapps/ChromeShortcutManager.java
new file mode 100644
index 0000000..1bc1e74
--- /dev/null
+++ b/chrome/android/java/src/org/chromium/chrome/browser/webapps/ChromeShortcutManager.java
@@ -0,0 +1,76 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.chrome.browser.webapps;
+
+import android.annotation.SuppressLint;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
+import android.graphics.Bitmap;
+
+import org.chromium.base.ContextUtils;
+import org.chromium.chrome.browser.ChromeApplication;
+
+import java.util.List;
+
+/**
+ * This class handles the adding of shortcuts to the Android Home Screen.
+ */
+public class ChromeShortcutManager {
+    // There is no public string defining this intent so if Home changes the value, we
+    // have to update this string.
+    private static final String INSTALL_SHORTCUT = "com.android.launcher.action.INSTALL_SHORTCUT";
+
+    private static ChromeShortcutManager sInstance;
+
+    /* Returns the singleton instance of ChromeShortcutManager, creating it if needed. */
+    public static ChromeShortcutManager getInstance() {
+        if (sInstance == null) {
+            sInstance = ((ChromeApplication) ContextUtils.getApplicationContext())
+                                .createChromeShortcutManager();
+        }
+        return sInstance;
+    }
+
+    /**
+     * Creates an intent that will add a shortcut to the home screen.
+     * @param title          Title of the shortcut.
+     * @param icon           Image that represents the shortcut.
+     * @param shortcutIntent Intent to fire when the shortcut is activated.
+     * @return Intent for the shortcut.
+     */
+    public static Intent createAddToHomeIntent(String title, Bitmap icon, Intent shortcutIntent) {
+        Intent i = new Intent(INSTALL_SHORTCUT);
+        i.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
+        i.putExtra(Intent.EXTRA_SHORTCUT_NAME, title);
+        i.putExtra(Intent.EXTRA_SHORTCUT_ICON, icon);
+        return i;
+    }
+
+    /**
+     * Add a shortcut to the home screen.
+     * @param title          Title of the shortcut.
+     * @param icon           Image that represents the shortcut.
+     * @param shortcutIntent Intent to fire when the shortcut is activated.
+     */
+    public void addShortcutToHomeScreen(String title, Bitmap icon, Intent shortcutIntent) {
+        Intent intent = createAddToHomeIntent(title, icon, shortcutIntent);
+        ContextUtils.getApplicationContext().sendBroadcast(intent);
+    }
+
+    // TODO(crbug.com/635567): Fix this properly.
+    @SuppressLint("WrongConstant")
+    public boolean canAddShortcutToHomescreen() {
+        PackageManager pm = ContextUtils.getApplicationContext().getPackageManager();
+        Intent i = new Intent(INSTALL_SHORTCUT);
+        List<ResolveInfo> receivers =
+                pm.queryBroadcastReceivers(i, PackageManager.GET_INTENT_FILTERS);
+        return !receivers.isEmpty();
+    }
+
+    public boolean shouldShowToastWhenAddingShortcut() {
+        return true;
+    }
+}
diff --git a/chrome/android/java_sources.gni b/chrome/android/java_sources.gni
index 3b2a603..9a5454bb 100644
--- a/chrome/android/java_sources.gni
+++ b/chrome/android/java_sources.gni
@@ -1053,6 +1053,7 @@
   "java/src/org/chromium/chrome/browser/webapps/FullScreenActivity.java",
   "java/src/org/chromium/chrome/browser/webapps/FullScreenDelegateFactory.java",
   "java/src/org/chromium/chrome/browser/webapps/GooglePlayWebApkInstallDelegate.java",
+  "java/src/org/chromium/chrome/browser/webapps/ChromeShortcutManager.java",
   "java/src/org/chromium/chrome/browser/webapps/WebApkActivity.java",
   "java/src/org/chromium/chrome/browser/webapps/WebApkActivity0.java",
   "java/src/org/chromium/chrome/browser/webapps/WebApkActivity1.java",
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/banners/AppBannerManagerTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/banners/AppBannerManagerTest.java
index 3e52909b..8d57540 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/banners/AppBannerManagerTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/banners/AppBannerManagerTest.java
@@ -7,7 +7,6 @@
 import android.app.Activity;
 import android.app.Instrumentation.ActivityMonitor;
 import android.app.Instrumentation.ActivityResult;
-import android.content.Context;
 import android.content.Intent;
 import android.content.IntentFilter;
 import android.content.pm.PackageInfo;
@@ -182,7 +181,7 @@
         AppBannerInfoBarDelegateAndroid.setPackageManagerForTesting(mPackageManager);
         ShortcutHelper.setDelegateForTests(new ShortcutHelper.Delegate() {
             @Override
-            public void sendBroadcast(Context context, Intent intent) {
+            public void addShortcutToHomescreen(String title, Bitmap icon, Intent shortcutIntent) {
                 // Ignore to prevent adding homescreen shortcuts.
             }
         });
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/webapps/AddToHomescreenManagerTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/webapps/AddToHomescreenManagerTest.java
index 8ee878c1..8678d77 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/webapps/AddToHomescreenManagerTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/webapps/AddToHomescreenManagerTest.java
@@ -5,7 +5,6 @@
 package org.chromium.chrome.browser.webapps;
 
 import android.app.Activity;
-import android.content.Context;
 import android.content.Intent;
 import android.graphics.Bitmap;
 import android.support.test.filters.SmallTest;
@@ -76,11 +75,13 @@
     private static final String EVENT_WEBAPP_TITLE = "appinstalled event test page";
 
     private static class TestShortcutHelperDelegate extends ShortcutHelper.Delegate {
-        public Intent mBroadcastedIntent;
+        public String mRequestedShortcutTitle;
+        public Intent mRequestedShortcutIntent;
 
         @Override
-        public void sendBroadcast(Context context, Intent intent) {
-            mBroadcastedIntent = intent;
+        public void addShortcutToHomescreen(String title, Bitmap icon, Intent shortcutIntent) {
+            mRequestedShortcutTitle = title;
+            mRequestedShortcutIntent = shortcutIntent;
         }
 
         @Override
@@ -88,8 +89,9 @@
             return WEBAPP_ACTION_NAME;
         }
 
-        public void clearBroadcastedIntent() {
-            mBroadcastedIntent = null;
+        public void clearRequestedShortcutData() {
+            mRequestedShortcutTitle = null;
+            mRequestedShortcutIntent = null;
         }
     }
 
@@ -177,23 +179,20 @@
         // Add a webapp shortcut and make sure the intent's parameters make sense.
         loadUrl(WEBAPP_HTML, WEBAPP_TITLE);
         addShortcutToTab(mTab, "");
-        Intent firedIntent = mShortcutHelperDelegate.mBroadcastedIntent;
-        assertEquals(WEBAPP_TITLE, firedIntent.getStringExtra(Intent.EXTRA_SHORTCUT_NAME));
+        assertEquals(WEBAPP_TITLE, mShortcutHelperDelegate.mRequestedShortcutTitle);
 
-        Intent launchIntent = firedIntent.getParcelableExtra(Intent.EXTRA_SHORTCUT_INTENT);
+        Intent launchIntent = mShortcutHelperDelegate.mRequestedShortcutIntent;
         assertEquals(WEBAPP_HTML, launchIntent.getStringExtra(ShortcutHelper.EXTRA_URL));
         assertEquals(WEBAPP_ACTION_NAME, launchIntent.getAction());
         assertEquals(mActivity.getPackageName(), launchIntent.getPackage());
 
         // Add a second shortcut and make sure it matches the second webapp's parameters.
-        mShortcutHelperDelegate.clearBroadcastedIntent();
+        mShortcutHelperDelegate.clearRequestedShortcutData();
         loadUrl(SECOND_WEBAPP_HTML, SECOND_WEBAPP_TITLE);
         addShortcutToTab(mTab, "");
-        Intent newFiredIntent = mShortcutHelperDelegate.mBroadcastedIntent;
-        assertEquals(SECOND_WEBAPP_TITLE,
-                newFiredIntent.getStringExtra(Intent.EXTRA_SHORTCUT_NAME));
+        assertEquals(SECOND_WEBAPP_TITLE, mShortcutHelperDelegate.mRequestedShortcutTitle);
 
-        Intent newLaunchIntent = newFiredIntent.getParcelableExtra(Intent.EXTRA_SHORTCUT_INTENT);
+        Intent newLaunchIntent = mShortcutHelperDelegate.mRequestedShortcutIntent;
         assertEquals(SECOND_WEBAPP_HTML, newLaunchIntent.getStringExtra(ShortcutHelper.EXTRA_URL));
         assertEquals(WEBAPP_ACTION_NAME, newLaunchIntent.getAction());
         assertEquals(mActivity.getPackageName(), newLaunchIntent.getPackage());
@@ -206,10 +205,9 @@
         addShortcutToTab(mTab, "");
 
         // Make sure the intent's parameters make sense.
-        Intent firedIntent = mShortcutHelperDelegate.mBroadcastedIntent;
-        assertEquals(NORMAL_TITLE, firedIntent.getStringExtra(Intent.EXTRA_SHORTCUT_NAME));
+        assertEquals(NORMAL_TITLE, mShortcutHelperDelegate.mRequestedShortcutTitle);
 
-        Intent launchIntent = firedIntent.getParcelableExtra(Intent.EXTRA_SHORTCUT_INTENT);
+        Intent launchIntent = mShortcutHelperDelegate.mRequestedShortcutIntent;
         assertEquals(mActivity.getPackageName(), launchIntent.getPackage());
         assertEquals(Intent.ACTION_VIEW, launchIntent.getAction());
         assertEquals(NORMAL_HTML, launchIntent.getDataString());
@@ -221,8 +219,7 @@
         // Add a webapp shortcut using the page's title.
         loadUrl(WEBAPP_HTML, WEBAPP_TITLE);
         addShortcutToTab(mTab, "");
-        Intent firedIntent = mShortcutHelperDelegate.mBroadcastedIntent;
-        assertEquals(WEBAPP_TITLE, firedIntent.getStringExtra(Intent.EXTRA_SHORTCUT_NAME));
+        assertEquals(WEBAPP_TITLE, mShortcutHelperDelegate.mRequestedShortcutTitle);
     }
 
     @SmallTest
@@ -231,8 +228,7 @@
         // Add a webapp shortcut with a custom title.
         loadUrl(WEBAPP_HTML, WEBAPP_TITLE);
         addShortcutToTab(mTab, EDITED_WEBAPP_TITLE);
-        Intent firedIntent = mShortcutHelperDelegate.mBroadcastedIntent;
-        assertEquals(EDITED_WEBAPP_TITLE, firedIntent.getStringExtra(Intent.EXTRA_SHORTCUT_NAME));
+        assertEquals(EDITED_WEBAPP_TITLE, mShortcutHelperDelegate.mRequestedShortcutTitle);
     }
 
     @SmallTest
@@ -240,8 +236,7 @@
     public void testAddWebappShortcutsWithApplicationName() throws Exception {
         loadUrl(META_APP_NAME_HTML, META_APP_NAME_PAGE_TITLE);
         addShortcutToTab(mTab, "");
-        Intent firedIntent = mShortcutHelperDelegate.mBroadcastedIntent;
-        assertEquals(META_APP_NAME_TITLE, firedIntent.getStringExtra(Intent.EXTRA_SHORTCUT_NAME));
+        assertEquals(META_APP_NAME_TITLE, mShortcutHelperDelegate.mRequestedShortcutTitle);
     }
 
     @SmallTest
@@ -314,7 +309,7 @@
         CriteriaHelper.pollUiThread(new Criteria() {
             @Override
             public boolean isSatisfied() {
-                return mShortcutHelperDelegate.mBroadcastedIntent != null;
+                return mShortcutHelperDelegate.mRequestedShortcutIntent != null;
             }
         });
 
diff --git a/chrome/browser/android/shortcut_helper.cc b/chrome/browser/android/shortcut_helper.cc
index aa309f6..e72c483 100644
--- a/chrome/browser/android/shortcut_helper.cc
+++ b/chrome/browser/android/shortcut_helper.cc
@@ -79,7 +79,7 @@
     AddWebappWithSkBitmap(info, webapp_id, icon_bitmap, splash_image_callback);
     return;
   }
-  AddShortcutWithSkBitmap(info, icon_bitmap);
+  AddShortcutWithSkBitmap(info, webapp_id, icon_bitmap);
 }
 
 // static
@@ -134,8 +134,11 @@
 }
 
 void ShortcutHelper::AddShortcutWithSkBitmap(const ShortcutInfo& info,
+                                             const std::string& id,
                                              const SkBitmap& icon_bitmap) {
   JNIEnv* env = base::android::AttachCurrentThread();
+  ScopedJavaLocalRef<jstring> java_id =
+      base::android::ConvertUTF8ToJavaString(env, id);
   ScopedJavaLocalRef<jstring> java_url =
       base::android::ConvertUTF8ToJavaString(env, info.url.spec());
   ScopedJavaLocalRef<jstring> java_user_title =
@@ -144,8 +147,8 @@
   if (icon_bitmap.getSize())
     java_bitmap = gfx::ConvertToJavaBitmap(&icon_bitmap);
 
-  Java_ShortcutHelper_addShortcut(env, java_url, java_user_title, java_bitmap,
-                                  info.source);
+  Java_ShortcutHelper_addShortcut(env, java_id, java_url, java_user_title,
+                                  java_bitmap, info.source);
 }
 
 void ShortcutHelper::ShowWebApkInstallInProgressToast() {
diff --git a/chrome/browser/android/shortcut_helper.h b/chrome/browser/android/shortcut_helper.h
index 26a3a10..0047991 100644
--- a/chrome/browser/android/shortcut_helper.h
+++ b/chrome/browser/android/shortcut_helper.h
@@ -62,9 +62,9 @@
       const base::Closure& splash_image_callback);
 
   // Adds a shortcut which opens in a browser tab to the launcher.
-  static void AddShortcutWithSkBitmap(
-      const ShortcutInfo& info,
-      const SkBitmap& icon_bitmap);
+  static void AddShortcutWithSkBitmap(const ShortcutInfo& info,
+                                      const std::string& id,
+                                      const SkBitmap& icon_bitmap);
 
   // Shows toast notifying user that a WebAPK install is already in progress
   // when user tries to queue a new install for the same WebAPK.
diff --git a/chrome/browser/extensions/process_manager_browsertest.cc b/chrome/browser/extensions/process_manager_browsertest.cc
index 71e9e4b..5453150 100644
--- a/chrome/browser/extensions/process_manager_browsertest.cc
+++ b/chrome/browser/extensions/process_manager_browsertest.cc
@@ -442,7 +442,9 @@
 // Child extension frames should only appear if it is hosted in an extension
 // process (i.e. if the top-level frame is an extension page, or if OOP frames
 // are enabled for extensions).
-IN_PROC_BROWSER_TEST_F(ProcessManagerBrowserTest, FrameClassification) {
+// Disabled due to flake: https://crbug.com/693287.
+IN_PROC_BROWSER_TEST_F(ProcessManagerBrowserTest,
+                       DISABLED_FrameClassification) {
   const Extension* extension1 = CreateExtension("Extension 1", false);
   const Extension* extension2 = CreateExtension("Extension 2", true);
   embedded_test_server()->ServeFilesFromDirectory(extension1->path());
diff --git a/content/app/strings/content_strings.grd b/content/app/strings/content_strings.grd
index 9280531..bf11e85 100644
--- a/content/app/strings/content_strings.grd
+++ b/content/app/strings/content_strings.grd
@@ -192,7 +192,7 @@
       <message name="IDS_FORM_SUBMIT_LABEL" desc="Default label for Submit buttons in forms on webpages.">
         Submit
       </message>
-      <message name="IDS_FORM_INPUT_ALT" desc="alt text for &lt;input&gt; elements with no alt, title, or value">
+      <message name="IDS_FORM_INPUT_ALT" desc="Alt text for &lt;input&gt; elements with no alt, title, or value">
         Submit
       </message>
       <message name="IDS_FORM_RESET_LABEL" desc="default label for Reset buttons in forms on webpages">
@@ -270,247 +270,247 @@
         <ph name="WEEK">$1<ex>Week 38, 2014</ex></ph>, starting on <ph name="WEEK_START_DATE">$2<ex>September 15, 2014</ex></ph>
       </message>
 
-      <message name="IDS_AX_ROLE_ARTICLE" desc="accessibility role description for article">
+      <message name="IDS_AX_ROLE_ARTICLE" desc="Accessibility role description for article">
         article
       </message>
-      <message name="IDS_AX_ROLE_BANNER" desc="accessibility role description for banner">
+      <message name="IDS_AX_ROLE_BANNER" desc="Accessibility role description for banner">
         banner
       </message>
-      <message name="IDS_AX_ROLE_COMPLEMENTARY" desc="accessibility role description for complementary">
+      <message name="IDS_AX_ROLE_COMPLEMENTARY" desc="Accessibility role description for complementary">
         complementary
       </message>
-      <message name="IDS_AX_ROLE_CHECK_BOX" desc="accessibility role description for a check box">
+      <message name="IDS_AX_ROLE_CHECK_BOX" desc="Accessibility role description for a check box">
         checkbox
       </message>
-      <message name="IDS_AX_ROLE_CONTENT_INFO" desc="accessibility role description for credits and information about the content of the page, like copyrights and privacy statements">
+      <message name="IDS_AX_ROLE_CONTENT_INFO" desc="Accessibility role description for credits and information about the content of the page, like copyrights and privacy statements">
         content info
       </message>
-      <message name="IDS_AX_ROLE_DEFINITION" desc="accessibility role description for a definition">
+      <message name="IDS_AX_ROLE_DEFINITION" desc="Accessibility role description for a definition">
         definition
       </message>
-      <message name="IDS_AX_ROLE_DESCRIPTION_LIST" desc="accessibility role description for a definition list">
+      <message name="IDS_AX_ROLE_DESCRIPTION_LIST" desc="Accessibility role description for a definition list">
         definition list
       </message>
-      <message name="IDS_AX_ROLE_DESCRIPTION_TERM" desc="accessibility role description for description term(as in a description list)">
+      <message name="IDS_AX_ROLE_DESCRIPTION_TERM" desc="Accessibility role description for description term (as in a description list)">
         term
       </message>
       <message name="IDS_AX_ROLE_FEED" desc="Accessibility role description for a scrollable list of articles.">
         feed
       </message>
-      <message name="IDS_AX_ROLE_FIGURE" desc="accessibility role description for figure">
+      <message name="IDS_AX_ROLE_FIGURE" desc="Accessibility role description for figure">
         figure
       </message>
-      <message name="IDS_AX_ROLE_FORM" desc="accessibility role description for form">
+      <message name="IDS_AX_ROLE_FORM" desc="Accessibility role description for form">
         form
       </message>
-      <message name="IDS_AX_ROLE_FOOTER" desc="accessibility role description for footers">
+      <message name="IDS_AX_ROLE_FOOTER" desc="Accessibility role description for footers">
         footer
       </message>
       <if expr="is_macosx">
-        <message name="IDS_AX_ROLE_STEPPER" desc="accessibility role description for a stepper - a control where you can use up/down arrows to increment or decrement it. The name 'stepper' is how this user interface element is described by VoiceOver on Mac OS X; the translation should be consistent with VoiceOver.">
+        <message name="IDS_AX_ROLE_STEPPER" desc="Accessibility role description for a stepper - a control where you can use up/down arrows to increment or decrement it. The name 'stepper' is how this user interface element is described by VoiceOver on Mac OS X; the translation should be consistent with VoiceOver.">
           stepper
         </message>
       </if>
-      <message name="IDS_AX_ROLE_TOGGLE_BUTTON" desc="accessibility role description for a toggle button">
+      <message name="IDS_AX_ROLE_TOGGLE_BUTTON" desc="Accessibility role description for a toggle button">
         toggle button
       </message>
-      <message name="IDS_AX_ROLE_HEADING" desc="accessibility role description for headings">
+      <message name="IDS_AX_ROLE_HEADING" desc="Accessibility role description for headings">
         heading
       </message>
-      <message name="IDS_AX_ROLE_IMAGE_MAP" desc="accessibility role description for image map">
+      <message name="IDS_AX_ROLE_IMAGE_MAP" desc="Accessibility role description for image map">
         image map
       </message>
-      <message name="IDS_AX_ROLE_LINK" desc="accessibility role description for link">
+      <message name="IDS_AX_ROLE_LINK" desc="Accessibility role description for link">
         link
       </message>
-      <message name="IDS_AX_ROLE_LIST_MARKER" desc="accessibility role description for list marker">
+      <message name="IDS_AX_ROLE_LIST_MARKER" desc="Accessibility role description for list marker">
         list marker
       </message>
-      <message name="IDS_AX_ROLE_MAIN_CONTENT" desc="accessibility role description for main content of the document.">
+      <message name="IDS_AX_ROLE_MAIN_CONTENT" desc="Accessibility role description for main content of the document.">
         main
       </message>
-      <message name="IDS_AX_ROLE_MARK" desc="accessibility role description for highlighted content.">
+      <message name="IDS_AX_ROLE_MARK" desc="Accessibility role description for highlighted content.">
         highlighted content
       </message>
-      <message name="IDS_AX_ROLE_MATH" desc="accessibility role description for math">
+      <message name="IDS_AX_ROLE_MATH" desc="Accessibility role description for math">
         math
       </message>
-      <message name="IDS_AX_ROLE_NAVIGATIONAL_LINK" desc="accessibility role description for group of navigational links.">
+      <message name="IDS_AX_ROLE_NAVIGATIONAL_LINK" desc="Accessibility role description for group of navigational links.">
         navigation
       </message>
-      <message name="IDS_AX_ROLE_REGION" desc="accessibility role description for region">
+      <message name="IDS_AX_ROLE_REGION" desc="Accessibility role description for region">
         region
       </message>
-      <message name="IDS_AX_ROLE_SEARCH_BOX" desc="accessibility role description for search text field">
+      <message name="IDS_AX_ROLE_SEARCH_BOX" desc="Accessibility role description for search text field">
         search text field
       </message>
-      <message name="IDS_AX_ROLE_STATUS" desc="accessibility role description for status">
+      <message name="IDS_AX_ROLE_STATUS" desc="Accessibility role description for status">
         status
       </message>
-      <message name="IDS_AX_ROLE_SWITCH" desc="accessibility role description for switch">
+      <message name="IDS_AX_ROLE_SWITCH" desc="Accessibility role description for switch">
         switch
       </message>
-      <message name="IDS_AX_ROLE_WEB_AREA" desc="accessibility role description for web area">
+      <message name="IDS_AX_ROLE_WEB_AREA" desc="Accessibility role description for web area">
         HTML content
       </message>
       <if expr="is_android">
-        <message name="IDS_AX_ROLE_ALERT" desc="accessibility role description for an alert">
+        <message name="IDS_AX_ROLE_ALERT" desc="Accessibility role description for an alert">
           alert
         </message>
-        <message name="IDS_AX_ROLE_ALERT_DIALOG" desc="accessibility role description for an alert dialog">
+        <message name="IDS_AX_ROLE_ALERT_DIALOG" desc="Accessibility role description for an alert dialog">
           alert_dialog
         </message>
-        <message name="IDS_AX_ROLE_APPLICATION" desc="accessibility role description for an application">
+        <message name="IDS_AX_ROLE_APPLICATION" desc="Accessibility role description for an application">
           application
         </message>
-        <message name="IDS_AX_ROLE_BLOCKQUOTE" desc="accessibility role description for a blockquote">
+        <message name="IDS_AX_ROLE_BLOCKQUOTE" desc="Accessibility role description for a blockquote">
           blockquote
         </message>
-        <message name="IDS_AX_ROLE_BUSY_INDICATOR" desc="accessibility role description for a busy indicator">
+        <message name="IDS_AX_ROLE_BUSY_INDICATOR" desc="Accessibility role description for a busy indicator">
           busy indicator
         </message>
-        <message name="IDS_AX_ROLE_BUTTON" desc="accessibility role description for a button">
+        <message name="IDS_AX_ROLE_BUTTON" desc="Accessibility role description for a button">
           button
         </message>
-        <message name="IDS_AX_ROLE_BUTTON_DROP_DOWN" desc="accessibility role description for a button that drops down">
+        <message name="IDS_AX_ROLE_BUTTON_DROP_DOWN" desc="Accessibility role description for a button that drops down">
           drop down button
         </message>
-        <message name="IDS_AX_ROLE_CELL" desc="accessibility role description for a cell, like in a table or grid">
+        <message name="IDS_AX_ROLE_CELL" desc="Accessibility role description for a cell, like in a table or grid">
           cell
         </message>
-        <message name="IDS_AX_ROLE_COLOR_WELL" desc="accessibility role description for a color picker">
+        <message name="IDS_AX_ROLE_COLOR_WELL" desc="Accessibility role description for a color picker">
           color picker
         </message>
-        <message name="IDS_AX_ROLE_COLUMN_HEADER" desc="accessibility role description for a column header">
+        <message name="IDS_AX_ROLE_COLUMN_HEADER" desc="Accessibility role description for a column header">
           column header
         </message>
-        <message name="IDS_AX_ROLE_COMBO_BOX" desc="accessibility role description for a combo box, an editable text control with an associated drop-down list">
+        <message name="IDS_AX_ROLE_COMBO_BOX" desc="Accessibility role description for a combo box, an editable text control with an associated drop-down list">
           combo box
         </message>
-        <message name="IDS_AX_ROLE_DATE" desc="accessibility role description for a date picker">
+        <message name="IDS_AX_ROLE_DATE" desc="Accessibility role description for a date picker">
           date picker
         </message>
-        <message name="IDS_AX_ROLE_DATE_TIME" desc="accessibility role description for a date / time picker">
+        <message name="IDS_AX_ROLE_DATE_TIME" desc="Accessibility role description for a date / time picker">
           date and time picker
         </message>
-        <message name="IDS_AX_ROLE_DIALOG" desc="accessibility role description for a dialog">
+        <message name="IDS_AX_ROLE_DIALOG" desc="Accessibility role description for a dialog">
           dialog
         </message>
-        <message name="IDS_AX_ROLE_DIRECTORY" desc="accessibility role description for a directory, for example a table of contents or list of employees">
+        <message name="IDS_AX_ROLE_DIRECTORY" desc="Accessibility role description for a directory, for example a table of contents or list of employees">
           directory
         </message>
-        <message name="IDS_AX_ROLE_DISCLOSURE_TRIANGLE" desc="accessibility role description for a disclosure triangle, a control shaped like a triangle that expands or collapses to show or hide extra content">
+        <message name="IDS_AX_ROLE_DISCLOSURE_TRIANGLE" desc="Accessibility role description for a disclosure triangle, a control shaped like a triangle that expands or collapses to show or hide extra content">
           disclosure triangle
         </message>
-        <message name="IDS_AX_ROLE_DOCUMENT" desc="accessibility role description for a document">
+        <message name="IDS_AX_ROLE_DOCUMENT" desc="Accessibility role description for a document">
           document
         </message>
-        <message name="IDS_AX_ROLE_EMBEDDED_OBJECT" desc="accessibility role description for an embedded object, like a video inside a web page">
+        <message name="IDS_AX_ROLE_EMBEDDED_OBJECT" desc="Accessibility role description for an embedded object, like a video inside a web page">
           object
         </message>
-        <message name="IDS_AX_ROLE_GRAPHIC" desc="accessibility role description for a graphic or image">
+        <message name="IDS_AX_ROLE_GRAPHIC" desc="Accessibility role description for a graphic or image">
           graphic
         </message>
-        <message name="IDS_AX_ROLE_HEADING_WITH_LEVEL" desc="accessibility role description for a heading with a heading level, for example 'heading 1' is the most important heading and 'heading 3' is less important">
+        <message name="IDS_AX_ROLE_HEADING_WITH_LEVEL" desc="Accessibility role description for a heading with a heading level, for example 'heading 1' is the most important heading and 'heading 3' is less important">
           heading <ph name="HEADING_LEVEL">$1<ex>1</ex></ph>
         </message>
-        <message name="IDS_AX_ROLE_INPUT_TIME" desc="accessibility role description for a time picker control">
+        <message name="IDS_AX_ROLE_INPUT_TIME" desc="Accessibility role description for a time picker control">
           time picker
         </message>
-        <message name="IDS_AX_ROLE_LIST_BOX" desc="accessibility role description for a list box control">
+        <message name="IDS_AX_ROLE_LIST_BOX" desc="Accessibility role description for a list box control">
           list box
         </message>
-        <message name="IDS_AX_ROLE_LOG" desc="accessibility role description for an information log, such as a chat log or error log">
+        <message name="IDS_AX_ROLE_LOG" desc="Accessibility role description for an information log, such as a chat log or error log">
           log
         </message>
-        <message name="IDS_AX_ROLE_MARQUEE" desc="accessibility role description for a marquee, such as a stock ticker or ad banner that frequently changes">
+        <message name="IDS_AX_ROLE_MARQUEE" desc="Accessibility role description for a marquee, such as a stock ticker or ad banner that frequently changes">
           marquee
         </message>
-        <message name="IDS_AX_ROLE_MENU" desc="accessibility role description for a menu">
+        <message name="IDS_AX_ROLE_MENU" desc="Accessibility role description for a menu">
           menu
         </message>
-        <message name="IDS_AX_ROLE_MENU_BAR" desc="accessibility role description for a menu bar">
+        <message name="IDS_AX_ROLE_MENU_BAR" desc="Accessibility role description for a menu bar">
           menu bar
         </message>
-        <message name="IDS_AX_ROLE_MENU_BUTTON" desc="accessibility role description for a menu button, a button that opens a menu">
+        <message name="IDS_AX_ROLE_MENU_BUTTON" desc="Accessibility role description for a menu button, a button that opens a menu">
           menu button
         </message>
-        <message name="IDS_AX_ROLE_MENU_ITEM" desc="accessibility role description for a menu item">
+        <message name="IDS_AX_ROLE_MENU_ITEM" desc="Accessibility role description for a menu item">
           menu item
         </message>
-        <message name="IDS_AX_ROLE_METER" desc="accessibility role description for a meter, for example a temperature indicator or progress bar">
+        <message name="IDS_AX_ROLE_METER" desc="Accessibility role description for a meter, for example a temperature indicator or progress bar">
           meter
         </message>
-        <message name="IDS_AX_ROLE_NOTE" desc="accessibility role description for a note">
+        <message name="IDS_AX_ROLE_NOTE" desc="Accessibility role description for a note">
           note
         </message>
-        <message name="IDS_AX_ROLE_OUTLINE" desc="accessibility role description for an outline, a presentation of information in a tree-like structure">
+        <message name="IDS_AX_ROLE_OUTLINE" desc="Accessibility role description for an outline, a presentation of information in a tree-like structure">
           outline
         </message>
-        <message name="IDS_AX_ROLE_POP_UP_BUTTON" desc="accessibility role description for a pop up button">
+        <message name="IDS_AX_ROLE_POP_UP_BUTTON" desc="Accessibility role description for a pop up button">
           pop up button
         </message>
-        <message name="IDS_AX_ROLE_PROGRESS_INDICATOR" desc="accessibility role description for a progress indicator">
+        <message name="IDS_AX_ROLE_PROGRESS_INDICATOR" desc="Accessibility role description for a progress indicator">
           progress indicator
         </message>
-        <message name="IDS_AX_ROLE_RADIO" desc="accessibility role description for a radio button">
+        <message name="IDS_AX_ROLE_RADIO" desc="Accessibility role description for a radio button">
           radio button
         </message>
-        <message name="IDS_AX_ROLE_RADIO_GROUP" desc="accessibility role description for a group of related radio buttons">
+        <message name="IDS_AX_ROLE_RADIO_GROUP" desc="Accessibility role description for a group of related radio buttons">
           radio group
         </message>
-        <message name="IDS_AX_ROLE_ROW_HEADER" desc="accessibility role description for a row header in a table">
+        <message name="IDS_AX_ROLE_ROW_HEADER" desc="Accessibility role description for a row header in a table">
           row header
         </message>
-        <message name="IDS_AX_ROLE_RULER" desc="accessibility role description for a ruler">
+        <message name="IDS_AX_ROLE_RULER" desc="Accessibility role description for a ruler">
           ruler
         </message>
-        <message name="IDS_AX_ROLE_SCROLL_BAR" desc="accessibility role description for a scroll bar">
+        <message name="IDS_AX_ROLE_SCROLL_BAR" desc="Accessibility role description for a scroll bar">
           scroll bar
         </message>
-        <message name="IDS_AX_ROLE_SEARCH" desc="accessibility role description for the section of a web page containing controls for searching the page or site">
+        <message name="IDS_AX_ROLE_SEARCH" desc="Accessibility role description for the section of a web page containing controls for searching the page or site">
           search
         </message>
-        <message name="IDS_AX_ROLE_SLIDER" desc="accessibility role description for a slider">
+        <message name="IDS_AX_ROLE_SLIDER" desc="Accessibility role description for a slider">
           slider
         </message>
-        <message name="IDS_AX_ROLE_SPIN_BUTTON" desc="accessibility role description for a spin button, a control containing a numerical value that can be incremented or decremented by 1">
+        <message name="IDS_AX_ROLE_SPIN_BUTTON" desc="Accessibility role description for a spin button, a control containing a numerical value that can be incremented or decremented by 1">
           spin button
         </message>
-        <message name="IDS_AX_ROLE_SPLITTER" desc="accessibility role description for a splitter, a control that splits the window in two pieces and can usually be dragged">
+        <message name="IDS_AX_ROLE_SPLITTER" desc="Accessibility role description for a splitter, a control that splits the window in two pieces and can usually be dragged">
           splitter
         </message>
-        <message name="IDS_AX_ROLE_TAB" desc="accessibility role description for a tab">
+        <message name="IDS_AX_ROLE_TAB" desc="Accessibility role description for a tab">
           tab
         </message>
-        <message name="IDS_AX_ROLE_TABLE" desc="accessibility role description for a table">
+        <message name="IDS_AX_ROLE_TABLE" desc="Accessibility role description for a table">
           table
         </message>
-        <message name="IDS_AX_ROLE_TAB_LIST" desc="accessibility role description for a tab list">
+        <message name="IDS_AX_ROLE_TAB_LIST" desc="Accessibility role description for a tab list">
           tab list
         </message>
-        <message name="IDS_AX_ROLE_TAB_PANEL" desc="accessibility role description for a tab panel, the part of the window that changes when selecting a new tab">
+        <message name="IDS_AX_ROLE_TAB_PANEL" desc="Accessibility role description for a tab panel, the part of the window that changes when selecting a new tab">
           tab panel
         </message>
-        <message name="IDS_AX_ROLE_TIME" desc="accessibility role description for a time">
+        <message name="IDS_AX_ROLE_TIME" desc="Accessibility role description for a time">
           time
         </message>
-        <message name="IDS_AX_ROLE_TIMER" desc="accessibility role description for a timer">
+        <message name="IDS_AX_ROLE_TIMER" desc="Accessibility role description for a timer">
           timer
         </message>
-        <message name="IDS_AX_ROLE_TOOLBAR" desc="accessibility role description for a toolbar">
+        <message name="IDS_AX_ROLE_TOOLBAR" desc="Accessibility role description for a toolbar">
           toolbar
         </message>
-        <message name="IDS_AX_ROLE_TOOLTIP" desc="accessibility role description for a tooltip">
+        <message name="IDS_AX_ROLE_TOOLTIP" desc="Accessibility role description for a tooltip">
           tooltip
         </message>
-        <message name="IDS_AX_ROLE_TREE" desc="accessibility role description for a tree">
+        <message name="IDS_AX_ROLE_TREE" desc="Accessibility role description for a tree">
           tree
         </message>
-        <message name="IDS_AX_ROLE_TREE_GRID" desc="accessibility role description for a tree grid">
+        <message name="IDS_AX_ROLE_TREE_GRID" desc="Accessibility role description for a tree grid">
           tree grid
         </message>
-        <message name="IDS_AX_ROLE_TREE_ITEM" desc="accessibility role description for a tree item">
+        <message name="IDS_AX_ROLE_TREE_ITEM" desc="Accessibility role description for a tree item">
           tree item
         </message>
       </if>
@@ -539,63 +539,63 @@
         video
       </message>
 
-      <message name="IDS_AX_MEDIA_MUTE_BUTTON" desc="accessibility role description for mute button">
+      <message name="IDS_AX_MEDIA_MUTE_BUTTON" desc="Accessibility role description for mute button">
         mute
       </message>
 
-      <message name="IDS_AX_MEDIA_UNMUTE_BUTTON" desc="accessibility role description for turn mute off button">
+      <message name="IDS_AX_MEDIA_UNMUTE_BUTTON" desc="Accessibility role description for turn mute off button">
         unmute
       </message>
 
-      <message name="IDS_AX_MEDIA_PLAY_BUTTON" desc="accessibility role description for play button">
+      <message name="IDS_AX_MEDIA_PLAY_BUTTON" desc="Accessibility role description for play button">
         play
       </message>
 
-      <message name="IDS_AX_MEDIA_PAUSE_BUTTON" desc="accessibility role description for pause button">
+      <message name="IDS_AX_MEDIA_PAUSE_BUTTON" desc="Accessibility role description for pause button">
         pause
       </message>
 
-      <message name="IDS_AX_MEDIA_SLIDER" desc="accessibility role description for timeline slider">
+      <message name="IDS_AX_MEDIA_SLIDER" desc="Accessibility role description for timeline slider">
         movie time
       </message>
 
-      <message name="IDS_AX_MEDIA_SLIDER_THUMB" desc="accessibility role description for timeline thumb">
+      <message name="IDS_AX_MEDIA_SLIDER_THUMB" desc="Accessibility role description for timeline thumb">
         movie timeline thumb
       </message>
 
-      <message name="IDS_AX_MEDIA_CURRENT_TIME_DISPLAY" desc="accessibility role description for elapsed time display">
+      <message name="IDS_AX_MEDIA_CURRENT_TIME_DISPLAY" desc="Accessibility role description for elapsed time display">
         elapsed time
       </message>
 
-      <message name="IDS_AX_MEDIA_TIME_REMAINING_DISPLAY" desc="accessibility role description for time remaining display">
+      <message name="IDS_AX_MEDIA_TIME_REMAINING_DISPLAY" desc="Accessibility role description for time remaining display">
         remaining time
       </message>
 
-      <message name="IDS_AX_MEDIA_STATUS_DISPLAY" desc="accessibility role description for movie status">
+      <message name="IDS_AX_MEDIA_STATUS_DISPLAY" desc="Accessibility role description for movie status">
         status
       </message>
 
-      <message name="IDS_AX_MEDIA_ENTER_FULL_SCREEN_BUTTON" desc="accessibility role description for enter fullscreen button">
+      <message name="IDS_AX_MEDIA_ENTER_FULL_SCREEN_BUTTON" desc="Accessibility role description for enter fullscreen button">
         enter full screen
       </message>
 
-      <message name="IDS_AX_MEDIA_EXIT_FULL_SCREEN_BUTTON" desc="accessibility role description for exit fullscreen button">
+      <message name="IDS_AX_MEDIA_EXIT_FULL_SCREEN_BUTTON" desc="Accessibility role description for exit fullscreen button">
         exit full screen
       </message>
 
-      <message name="IDS_AX_MEDIA_SHOW_CLOSED_CAPTIONS_BUTTON" desc="accessibility role description for show closed captions button">
+      <message name="IDS_AX_MEDIA_SHOW_CLOSED_CAPTIONS_BUTTON" desc="Accessibility role description for show closed captions button">
         show closed captions
       </message>
 
-      <message name="IDS_AX_MEDIA_HIDE_CLOSED_CAPTIONS_BUTTON" desc="accessibility role description for hide closed captions button">
+      <message name="IDS_AX_MEDIA_HIDE_CLOSED_CAPTIONS_BUTTON" desc="Accessibility role description for hide closed captions button">
         hide closed captions
       </message>
 
-      <message name="IDS_AX_MEDIA_CAST_OFF_BUTTON" desc="accessibility role description for remote playback button">
+      <message name="IDS_AX_MEDIA_CAST_OFF_BUTTON" desc="Accessibility role description for remote playback button">
         play on remote device
       </message>
 
-      <message name="IDS_AX_MEDIA_CAST_ON_BUTTON" desc="accessibility role description for remote playback control button">
+      <message name="IDS_AX_MEDIA_CAST_ON_BUTTON" desc="Accessibility role description for remote playback control button">
         control remote playback
       </message>
 
@@ -615,71 +615,71 @@
         video
       </message>
 
-      <message name="IDS_AX_MEDIA_MUTE_BUTTON_HELP" desc="accessibility help description for mute button">
+      <message name="IDS_AX_MEDIA_MUTE_BUTTON_HELP" desc="Accessibility help description for mute button">
         mute audio track
       </message>
 
-      <message name="IDS_AX_MEDIA_UNMUTE_BUTTON_HELP" desc="accessibility help description for turn mute off button">
+      <message name="IDS_AX_MEDIA_UNMUTE_BUTTON_HELP" desc="Accessibility help description for turn mute off button">
         unmute audio track
       </message>
 
-      <message name="IDS_AX_MEDIA_PLAY_BUTTON_HELP" desc="accessibility help description for play button">
+      <message name="IDS_AX_MEDIA_PLAY_BUTTON_HELP" desc="Accessibility help description for play button">
         begin playback
       </message>
 
-      <message name="IDS_AX_MEDIA_PAUSE_BUTTON_HELP" desc="accessibility help description for pause button">
+      <message name="IDS_AX_MEDIA_PAUSE_BUTTON_HELP" desc="Accessibility help description for pause button">
         pause playback
       </message>
 
-      <message name="IDS_AX_MEDIA_AUDIO_SLIDER_HELP" desc="accessibility help description for audio timeline slider">
+      <message name="IDS_AX_MEDIA_AUDIO_SLIDER_HELP" desc="Accessibility help description for audio timeline slider">
         audio time scrubber
       </message>
 
-      <message name="IDS_AX_MEDIA_VIDEO_SLIDER_HELP" desc="accessibility help description for video timeline slider">
+      <message name="IDS_AX_MEDIA_VIDEO_SLIDER_HELP" desc="Accessibility help description for video timeline slider">
         movie time scrubber
       </message>
 
-      <message name="IDS_AX_MEDIA_SLIDER_THUMB_HELP" desc="accessibility help description for timeline thumb">
+      <message name="IDS_AX_MEDIA_SLIDER_THUMB_HELP" desc="Accessibility help description for timeline thumb">
         movie time scrubber thumb
       </message>
 
-      <message name="IDS_AX_MEDIA_CURRENT_TIME_DISPLAY_HELP" desc="accessibility help description for elapsed time display">
+      <message name="IDS_AX_MEDIA_CURRENT_TIME_DISPLAY_HELP" desc="Accessibility help description for elapsed time display">
         current time in seconds
       </message>
 
-      <message name="IDS_AX_MEDIA_TIME_REMAINING_DISPLAY_HELP" desc="accessibility help description for time remaining display">
-        number of seconds ofmovie remaining
+      <message name="IDS_AX_MEDIA_TIME_REMAINING_DISPLAY_HELP" desc="Accessibility help description for time remaining display">
+        number of seconds of movie remaining
       </message>
 
-      <message name="IDS_AX_MEDIA_STATUS_DISPLAY_HELP" desc="accessibility help description for movie status">
+      <message name="IDS_AX_MEDIA_STATUS_DISPLAY_HELP" desc="Accessibility help description for movie status">
         current movie status
       </message>
 
-      <message name="IDS_AX_MEDIA_ENTER_FULL_SCREEN_BUTTON_HELP" desc="accessibility help description for enter fullscreen button">
+      <message name="IDS_AX_MEDIA_ENTER_FULL_SCREEN_BUTTON_HELP" desc="Accessibility help description for enter fullscreen button">
         play movie in full screen mode
       </message>
 
-      <message name="IDS_AX_MEDIA_EXIT_FULL_SCREEN_BUTTON_HELP" desc="accessibility help description for exit fullscreen button">
+      <message name="IDS_AX_MEDIA_EXIT_FULL_SCREEN_BUTTON_HELP" desc="Accessibility help description for exit fullscreen button">
         exit full screen
       </message>
 
-      <message name="IDS_AX_MEDIA_SHOW_CLOSED_CAPTIONS_BUTTON_HELP" desc="accessibility help description for show closed captions button">
+      <message name="IDS_AX_MEDIA_SHOW_CLOSED_CAPTIONS_BUTTON_HELP" desc="Accessibility help description for show closed captions button">
         start displaying closed captions
       </message>
 
-      <message name="IDS_AX_MEDIA_HIDE_CLOSED_CAPTIONS_BUTTON_HELP" desc="accessibility help description for hide closed captions button">
+      <message name="IDS_AX_MEDIA_HIDE_CLOSED_CAPTIONS_BUTTON_HELP" desc="Accessibility help description for hide closed captions button">
         stop displaying closed captions
       </message>
 
-      <message name="IDS_AX_MEDIA_CAST_OFF_BUTTON_HELP" desc="accessibility help description for remote playback button">
+      <message name="IDS_AX_MEDIA_CAST_OFF_BUTTON_HELP" desc="Accessibility help description for remote playback button">
         play on remote device
       </message>
 
-      <message name="IDS_AX_MEDIA_CAST_ON_BUTTON_HELP" desc="accessibility help description for remote playback control button">
+      <message name="IDS_AX_MEDIA_CAST_ON_BUTTON_HELP" desc="Accessibility help description for remote playback control button">
         control remote playback
       </message>
 
-      <message name="IDS_AX_MEDIA_OVERFLOW_BUTTON_HELP" desc="accessibility help description for overflow button.">
+      <message name="IDS_AX_MEDIA_OVERFLOW_BUTTON_HELP" desc="Accessibility help description for overflow button.">
         more options
       </message>
 
@@ -707,7 +707,7 @@
         Year
       </message>
 
-      <message name="IDS_FORM_INPUT_WEEK_TEMPLATE" desc="A specfic week (1-53) in a specific year shown in a form control">
+      <message name="IDS_FORM_INPUT_WEEK_TEMPLATE" desc="A specific week (1-53) in a specific year shown in a form control">
         Week <ph name="WEEKNUMBER">$2<ex>51</ex></ph>, <ph name="YEAR">$1<ex>2012</ex></ph>
       </message>
       <message name="IDS_FORM_VALIDATION_VALUE_MISSING_MULTIPLE_FILE" desc="Heading or short sentence shown when a file upload control in a webpage requires one or more files selected, but the user didn't specify any files.">
diff --git a/content/browser/browser_main_loop.cc b/content/browser/browser_main_loop.cc
index 1a48362..a4e0e2b1 100644
--- a/content/browser/browser_main_loop.cc
+++ b/content/browser/browser_main_loop.cc
@@ -1618,21 +1618,11 @@
   if (base::FeatureList::IsEnabled(features::kMemoryCoordinator)) {
     // Disable MemoryPressureListener when memory coordinator is enabled.
     base::MemoryPressureListener::SetNotificationsSuppressed(true);
-    // base::Unretained is safe because the lifetime of MemoryCoordinator is
-    // tied to the lifetime of the browser process.
-    base::MemoryCoordinatorProxy::GetInstance()->
-        SetGetCurrentMemoryStateCallback(base::Bind(
-            &MemoryCoordinatorImpl::GetCurrentMemoryState,
-            base::Unretained(MemoryCoordinatorImpl::GetInstance())));
-    base::MemoryCoordinatorProxy::GetInstance()->
-        SetSetCurrentMemoryStateForTestingCallback(base::Bind(
-            &MemoryCoordinatorImpl::SetCurrentMemoryStateForTesting,
-            base::Unretained(MemoryCoordinatorImpl::GetInstance())));
-
+    auto* coordinator = MemoryCoordinatorImpl::GetInstance();
     if (memory_pressure_monitor_) {
       memory_pressure_monitor_->SetDispatchCallback(
           base::Bind(&MemoryCoordinatorImpl::RecordMemoryPressure,
-                     base::Unretained(MemoryCoordinatorImpl::GetInstance())));
+                     base::Unretained(coordinator)));
     }
   }
 }
diff --git a/content/browser/memory/memory_coordinator_impl.cc b/content/browser/memory/memory_coordinator_impl.cc
index b8e34d26..7dc87404 100644
--- a/content/browser/memory/memory_coordinator_impl.cc
+++ b/content/browser/memory/memory_coordinator_impl.cc
@@ -173,6 +173,7 @@
       memory_monitor_(std::move(memory_monitor)),
       state_updater_(base::MakeUnique<MemoryStateUpdater>(this, task_runner)) {
   DCHECK(memory_monitor_.get());
+  base::MemoryCoordinatorProxy::SetMemoryCoordinator(this);
 }
 
 MemoryCoordinatorImpl::~MemoryCoordinatorImpl() {}
diff --git a/content/browser/memory/memory_coordinator_impl.h b/content/browser/memory/memory_coordinator_impl.h
index 250d586..eb5bf04 100644
--- a/content/browser/memory/memory_coordinator_impl.h
+++ b/content/browser/memory/memory_coordinator_impl.h
@@ -7,6 +7,7 @@
 
 #include "base/callback.h"
 #include "base/memory/memory_coordinator_client.h"
+#include "base/memory/memory_coordinator_proxy.h"
 #include "base/memory/memory_pressure_monitor.h"
 #include "base/memory/singleton.h"
 #include "base/single_thread_task_runner.h"
@@ -33,7 +34,8 @@
 // MemoryCoordinatorImpl is an implementation of MemoryCoordinator.
 // The current implementation uses MemoryStateUpdater to update the global
 // memory state. See comments in MemoryStateUpdater for details.
-class CONTENT_EXPORT MemoryCoordinatorImpl : public MemoryCoordinator,
+class CONTENT_EXPORT MemoryCoordinatorImpl : public base::MemoryCoordinator,
+                                             public MemoryCoordinator,
                                              public NotificationObserver,
                                              public base::NonThreadSafe {
  public:
@@ -75,10 +77,10 @@
   // Returns the browser's current memory state. Note that the current state
   // could be different from the global memory state as the browser won't be
   // suspended.
-  MemoryState GetCurrentMemoryState() const;
+  MemoryState GetCurrentMemoryState() const override;
 
   // Sets the global memory state for testing.
-  void SetCurrentMemoryStateForTesting(MemoryState memory_state);
+  void SetCurrentMemoryStateForTesting(MemoryState memory_state) override;
 
   // MemoryCoordinator implementation:
   MemoryState GetStateForProcess(base::ProcessHandle handle) override;
diff --git a/content/browser/memory/memory_coordinator_impl_unittest.cc b/content/browser/memory/memory_coordinator_impl_unittest.cc
index 3e83a12..63edb99 100644
--- a/content/browser/memory/memory_coordinator_impl_unittest.cc
+++ b/content/browser/memory/memory_coordinator_impl_unittest.cc
@@ -178,15 +178,6 @@
 
     task_runner_ = new base::TestMockTimeTaskRunner();
     coordinator_.reset(new TestMemoryCoordinatorImpl(task_runner_));
-
-    base::MemoryCoordinatorProxy::GetInstance()->
-        SetGetCurrentMemoryStateCallback(base::Bind(
-            &MemoryCoordinatorImpl::GetCurrentMemoryState,
-            base::Unretained(coordinator_.get())));
-    base::MemoryCoordinatorProxy::GetInstance()->
-        SetSetCurrentMemoryStateForTestingCallback(base::Bind(
-            &MemoryCoordinatorImpl::SetCurrentMemoryStateForTesting,
-            base::Unretained(coordinator_.get())));
   }
 
   MockMemoryMonitor* GetMockMemoryMonitor() {
diff --git a/content/public/test/memory_coordinator_test_utils.cc b/content/public/test/memory_coordinator_test_utils.cc
index 5dd9d41..b779289 100644
--- a/content/public/test/memory_coordinator_test_utils.cc
+++ b/content/public/test/memory_coordinator_test_utils.cc
@@ -11,14 +11,8 @@
 namespace content {
 
 void SetUpMemoryCoordinatorProxyForTesting() {
-  base::MemoryCoordinatorProxy::GetInstance()->
-      SetGetCurrentMemoryStateCallback(base::Bind(
-          &MemoryCoordinatorImpl::GetCurrentMemoryState,
-          base::Unretained(MemoryCoordinatorImpl::GetInstance())));
-  base::MemoryCoordinatorProxy::GetInstance()->
-      SetSetCurrentMemoryStateForTestingCallback(base::Bind(
-          &MemoryCoordinatorImpl::SetCurrentMemoryStateForTesting,
-          base::Unretained(MemoryCoordinatorImpl::GetInstance())));
+  // Make sure that MemoryCoordinatorImpl is initialized.
+  MemoryCoordinatorImpl::GetInstance();
 }
 
 }  // namespace content
diff --git a/content/renderer/media/recorder/media_recorder_handler.cc b/content/renderer/media/recorder/media_recorder_handler.cc
index 3c3d2e8..9fcd2b9c 100644
--- a/content/renderer/media/recorder/media_recorder_handler.cc
+++ b/content/renderer/media/recorder/media_recorder_handler.cc
@@ -164,23 +164,23 @@
   timeslice_ = TimeDelta::FromMilliseconds(timeslice);
   slice_origin_timestamp_ = TimeTicks::Now();
 
-  blink::WebVector<blink::WebMediaStreamTrack> video_tracks, audio_tracks;
-  media_stream_.videoTracks(video_tracks);
-  media_stream_.audioTracks(audio_tracks);
+  media_stream_.videoTracks(video_tracks_);
+  media_stream_.audioTracks(audio_tracks_);
 
-  if (video_tracks.isEmpty() && audio_tracks.isEmpty()) {
+  if (video_tracks_.isEmpty() && audio_tracks_.isEmpty()) {
     LOG(WARNING) << __func__ << ": no media tracks.";
     return false;
   }
 
   const bool use_video_tracks =
-      !video_tracks.isEmpty() && video_tracks[0].isEnabled() &&
-      video_tracks[0].source().getReadyState() !=
+      !video_tracks_.isEmpty() && video_tracks_[0].isEnabled() &&
+      video_tracks_[0].source().getReadyState() !=
           blink::WebMediaStreamSource::ReadyStateEnded;
   const bool use_audio_tracks =
-      !audio_tracks.isEmpty() && MediaStreamAudioTrack::From(audio_tracks[0]) &&
-      audio_tracks[0].isEnabled() &&
-      audio_tracks[0].source().getReadyState() !=
+      !audio_tracks_.isEmpty() &&
+      MediaStreamAudioTrack::From(audio_tracks_[0]) &&
+      audio_tracks_[0].isEnabled() &&
+      audio_tracks_[0].source().getReadyState() !=
           blink::WebMediaStreamSource::ReadyStateEnded;
 
   if (!use_video_tracks && !use_audio_tracks) {
@@ -196,10 +196,10 @@
   if (use_video_tracks) {
     // TODO(mcasas): The muxer API supports only one video track. Extend it to
     // several video tracks, see http://crbug.com/528523.
-    LOG_IF(WARNING, video_tracks.size() > 1u)
+    LOG_IF(WARNING, video_tracks_.size() > 1u)
         << "Recording multiple video tracks is not implemented. "
         << "Only recording first video track.";
-    const blink::WebMediaStreamTrack& video_track = video_tracks[0];
+    const blink::WebMediaStreamTrack& video_track = video_tracks_[0];
     if (video_track.isNull())
       return false;
 
@@ -214,10 +214,10 @@
   if (use_audio_tracks) {
     // TODO(ajose): The muxer API supports only one audio track. Extend it to
     // several tracks.
-    LOG_IF(WARNING, audio_tracks.size() > 1u)
+    LOG_IF(WARNING, audio_tracks_.size() > 1u)
         << "Recording multiple audio"
         << " tracks is not implemented.  Only recording first audio track.";
-    const blink::WebMediaStreamTrack& audio_track = audio_tracks[0];
+    const blink::WebMediaStreamTrack& audio_track = audio_tracks_[0];
     if (audio_track.isNull())
       return false;
 
@@ -237,6 +237,7 @@
   DCHECK(main_render_thread_checker_.CalledOnValidThread());
   // Don't check |recording_| since we can go directly from pause() to stop().
 
+  weak_factory_.InvalidateWeakPtrs();
   recording_ = false;
   timeslice_ = TimeDelta::FromMilliseconds(0);
   video_recorders_.clear();
@@ -272,6 +273,11 @@
     TimeTicks timestamp,
     bool is_key_frame) {
   DCHECK(main_render_thread_checker_.CalledOnValidThread());
+
+  if (UpdateTracksAndCheckIfChanged()) {
+    client_->onError("Amount of tracks in MediaStream has changed.");
+    return;
+  }
   if (!webm_muxer_)
     return;
   if (!webm_muxer_->OnEncodedVideo(params, std::move(encoded_data), timestamp,
@@ -286,6 +292,11 @@
     std::unique_ptr<std::string> encoded_data,
     base::TimeTicks timestamp) {
   DCHECK(main_render_thread_checker_.CalledOnValidThread());
+
+  if (UpdateTracksAndCheckIfChanged()) {
+    client_->onError("Amount of tracks in MediaStream has changed.");
+    return;
+  }
   if (!webm_muxer_)
     return;
   if (!webm_muxer_->OnEncodedAudio(params, std::move(encoded_data),
@@ -313,6 +324,41 @@
                      (now - TimeTicks::UnixEpoch()).InMillisecondsF());
 }
 
+bool MediaRecorderHandler::UpdateTracksAndCheckIfChanged() {
+  DCHECK(main_render_thread_checker_.CalledOnValidThread());
+
+  blink::WebVector<blink::WebMediaStreamTrack> video_tracks, audio_tracks;
+  media_stream_.videoTracks(video_tracks);
+  media_stream_.audioTracks(audio_tracks);
+
+  bool video_tracks_changed = video_tracks_.size() != video_tracks.size();
+  bool audio_tracks_changed = audio_tracks_.size() != audio_tracks.size();
+
+  if (!video_tracks_changed) {
+    for (size_t i = 0; i < video_tracks.size(); ++i) {
+      if (video_tracks_[i].id() != video_tracks[i].id()) {
+        video_tracks_changed = true;
+        break;
+      }
+    }
+  }
+  if (!video_tracks_changed && !audio_tracks_changed) {
+    for (size_t i = 0; i < audio_tracks.size(); ++i) {
+      if (audio_tracks_[i].id() != audio_tracks[i].id()) {
+        audio_tracks_changed = true;
+        break;
+      }
+    }
+  }
+
+  if (video_tracks_changed)
+    video_tracks_ = video_tracks;
+  if (audio_tracks_changed)
+    audio_tracks_ = audio_tracks;
+
+  return video_tracks_changed || audio_tracks_changed;
+}
+
 void MediaRecorderHandler::OnVideoFrameForTesting(
     const scoped_refptr<media::VideoFrame>& frame,
     const TimeTicks& timestamp) {
diff --git a/content/renderer/media/recorder/media_recorder_handler.h b/content/renderer/media/recorder/media_recorder_handler.h
index 58d3d6f..d7cf39da 100644
--- a/content/renderer/media/recorder/media_recorder_handler.h
+++ b/content/renderer/media/recorder/media_recorder_handler.h
@@ -74,6 +74,9 @@
                       base::TimeTicks timestamp);
   void WriteData(base::StringPiece data);
 
+  // Updates |video_tracks_|,|audio_tracks_| and returns true if any changed.
+  bool UpdateTracksAndCheckIfChanged();
+
   void OnVideoFrameForTesting(const scoped_refptr<media::VideoFrame>& frame,
                               const base::TimeTicks& timestamp);
   void OnAudioBusForTesting(const media::AudioBus& audio_bus,
@@ -98,6 +101,8 @@
 
   bool recording_;
   blink::WebMediaStream media_stream_;  // The MediaStream being recorded.
+  blink::WebVector<blink::WebMediaStreamTrack> video_tracks_;
+  blink::WebVector<blink::WebMediaStreamTrack> audio_tracks_;
 
   // |client_| is a weak pointer, and is valid for the lifetime of this object.
   blink::WebMediaRecorderHandlerClient* client_;
diff --git a/gpu/command_buffer/service/gles2_cmd_copy_texture_chromium.cc b/gpu/command_buffer/service/gles2_cmd_copy_texture_chromium.cc
index bbfdda1..d310095 100644
--- a/gpu/command_buffer/service/gles2_cmd_copy_texture_chromium.cc
+++ b/gpu/command_buffer/service/gles2_cmd_copy_texture_chromium.cc
@@ -105,10 +105,10 @@
 // Returns the correct fragment shader id to evaluate the copy operation for
 // the premultiply alpha pixel store settings and target.
 ShaderId GetFragmentShaderId(bool premultiply_alpha,
-                                     bool unpremultiply_alpha,
-                                     GLenum target,
-                                     GLenum source_format,
-                                     GLenum dest_format) {
+                             bool unpremultiply_alpha,
+                             GLenum target,
+                             GLenum source_format,
+                             GLenum dest_format) {
   unsigned alphaIndex = 0;
   unsigned targetIndex = 0;
   unsigned sourceFormatIndex = 0;
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder.cc b/gpu/command_buffer/service/gles2_cmd_decoder.cc
index 80d7234..c823faa 100644
--- a/gpu/command_buffer/service/gles2_cmd_decoder.cc
+++ b/gpu/command_buffer/service/gles2_cmd_decoder.cc
@@ -2028,8 +2028,11 @@
   bool CanUseCopyTextureCHROMIUMInternalFormat(GLenum dest_internal_format);
   CopyTextureMethod ValidateCopyTextureCHROMIUMInternalFormats(
       const char* function_name,
-      TextureRef* source_texture_ref,
       GLint source_level,
+      GLenum source_internal_format,
+      GLenum source_type,
+      GLenum dest_target,
+      GLint dest_level,
       GLenum dest_internal_format);
   bool ValidateCompressedCopyTextureCHROMIUM(const char* function_name,
                                              TextureRef* source_texture_ref,
@@ -16270,15 +16273,12 @@
 
 CopyTextureMethod GLES2DecoderImpl::ValidateCopyTextureCHROMIUMInternalFormats(
     const char* function_name,
-    TextureRef* source_texture_ref,
     GLint source_level,
+    GLenum source_internal_format,
+    GLenum source_type,
+    GLenum dest_target,
+    GLint dest_level,
     GLenum dest_internal_format) {
-  GLenum source_type = 0;
-  GLenum source_internal_format = 0;
-  Texture* source_texture = source_texture_ref->texture();
-  source_texture->GetLevelType(source_texture->target(), source_level,
-                               &source_type, &source_internal_format);
-
   bool valid_dest_format = false;
   // TODO(qiankun.miao@intel.com): ALPHA, LUMINANCE and LUMINANCE_ALPHA formats
   // are not supported on GL core profile. See crbug.com/577144. Enable the
@@ -16372,12 +16372,26 @@
       dest_internal_format != GL_BGRA8_EXT &&
       ValidateCopyTexFormatHelper(dest_internal_format, source_internal_format,
                                   source_type, &output_error_msg);
-  if (source_format_color_renderable && copy_tex_image_format_valid)
-    return DIRECT_COPY;
 
-  if (dest_format_color_renderable)
+  // TODO(qiankun.miao@intel.com): for WebGL 2.0 or OpenGL ES 3.0, both
+  // DIRECT_DRAW path for dest_level > 0 and DIRECT_COPY path for source_level >
+  // 0 are not available due to a framebuffer completeness bug:
+  // crbug.com/678526. Once the bug is fixed, the limitation for WebGL 2.0 and
+  // OpenGL ES 3.0 can be lifted.
+  // For WebGL 1.0 or OpenGL ES 2.0, DIRECT_DRAW path isn't available for
+  // dest_level > 0 due to level > 0 isn't supported by glFramebufferTexture2D
+  // in ES2 context. DIRECT_DRAW path isn't available for cube map dest texture
+  // either due to it may be cube map incomplete. Go to DRAW_AND_COPY path in
+  // these cases.
+  if (source_format_color_renderable && copy_tex_image_format_valid &&
+      source_level == 0)
+    return DIRECT_COPY;
+  if (dest_format_color_renderable && dest_level == 0 &&
+      dest_target != GL_TEXTURE_CUBE_MAP)
     return DIRECT_DRAW;
 
+  // Draw to a fbo attaching level 0 of an intermediate texture,
+  // then copy from the fbo to dest texture level with glCopyTexImage2D.
   return DRAW_AND_COPY;
 }
 
@@ -16475,31 +16489,14 @@
   }
 
   CopyTextureMethod method = ValidateCopyTextureCHROMIUMInternalFormats(
-      kFunctionName, source_texture_ref, source_level, internal_format);
+      kFunctionName, source_level, source_internal_format, source_type,
+      dest_binding_target, dest_level, internal_format);
   // INVALID_OPERATION is already generated by
   // ValidateCopyTextureCHROMIUMInternalFormats.
   if (method == NOT_COPYABLE) {
     return;
   }
 
-  // Draw to a fbo attaching level 0 of an intermediate texture,
-  // then copy from the fbo to dest texture level with glCopyTexImage2D.
-  // For WebGL 1.0 or OpenGL ES 2.0, DIRECT_DRAW path isn't available for
-  // dest_level > 0 due to level > 0 isn't supported by glFramebufferTexture2D
-  // in ES2 context. DIRECT_DRAW path isn't available for cube map dest texture
-  // either due to it may be cube map incomplete. Go to DRAW_AND_COPY path in
-  // these cases.
-  // TODO(qiankun.miao@intel.com): for WebGL 2.0 or OpenGL ES 3.0, both
-  // DIRECT_DRAW path for dest_level > 0 and DIRECT_COPY path for source_level >
-  // 0 are not available due to a framebuffer completeness bug:
-  // crbug.com/678526. Once the bug is fixed, the limitation for WebGL 2.0 and
-  // OpenGL ES 3.0 can be lifted.
-  if (((dest_level > 0 || dest_binding_target == GL_TEXTURE_CUBE_MAP) &&
-       method == DIRECT_DRAW) ||
-      (source_level > 0 && method == DIRECT_COPY)) {
-    method = DRAW_AND_COPY;
-  }
-
   if (feature_info_->feature_flags().desktop_srgb_support) {
     bool enable_framebuffer_srgb =
         GLES2Util::GetColorEncodingFromInternalFormat(source_internal_format) ==
@@ -16744,7 +16741,8 @@
   }
 
   CopyTextureMethod method = ValidateCopyTextureCHROMIUMInternalFormats(
-      kFunctionName, source_texture_ref, source_level, dest_internal_format);
+      kFunctionName, source_level, source_internal_format, source_type,
+      dest_binding_target, dest_level, dest_internal_format);
   // INVALID_OPERATION is already generated by
   // ValidateCopyTextureCHROMIUMInternalFormats.
   if (method == NOT_COPYABLE) {
@@ -16763,24 +16761,6 @@
   }
 #endif
 
-  // Draw to a fbo attaching level 0 of an intermediate texture,
-  // then copy from the fbo to dest texture level with glCopyTexImage2D.
-  // For WebGL 1.0 or OpenGL ES 2.0, DIRECT_DRAW path isn't available for
-  // dest_level > 0 due to level > 0 isn't supported by glFramebufferTexture2D
-  // in ES2 context. DIRECT_DRAW path isn't available for cube map dest texture
-  // either due to it may be cube map incomplete. Go to DRAW_AND_COPY path in
-  // these cases.
-  // TODO(qiankun.miao@intel.com): for WebGL 2.0 or OpenGL ES 3.0, both
-  // DIRECT_DRAW path for dest_level > 0 and DIRECT_COPY path for source_level >
-  // 0 are not available due to a framebuffer completeness bug:
-  // crbug.com/678526. Once the bug is fixed, the limitation for WebGL 2.0 and
-  // OpenGL ES 3.0 can be lifted.
-  if (((dest_level > 0 || dest_binding_target == GL_TEXTURE_CUBE_MAP) &&
-       method == DIRECT_DRAW) ||
-      (source_level > 0 && method == DIRECT_COPY)) {
-    method = DRAW_AND_COPY;
-  }
-
   if (feature_info_->feature_flags().desktop_srgb_support) {
     bool enable_framebuffer_srgb =
         GLES2Util::GetColorEncodingFromInternalFormat(source_internal_format) ==
diff --git a/media/capture/video/video_capture_device_unittest.cc b/media/capture/video/video_capture_device_unittest.cc
index 059a129d..477c911 100644
--- a/media/capture/video/video_capture_device_unittest.cc
+++ b/media/capture/video/video_capture_device_unittest.cc
@@ -158,7 +158,8 @@
   base::Callback<void(const VideoCaptureFormat&)> frame_cb_;
 };
 
-class MockImageCaptureClient : public base::RefCounted<MockImageCaptureClient> {
+class MockImageCaptureClient
+    : public base::RefCountedThreadSafe<MockImageCaptureClient> {
  public:
   // GMock doesn't support move-only arguments, so we use this forward method.
   void DoOnPhotoTaken(mojom::BlobPtr blob) {
@@ -197,7 +198,7 @@
   const mojom::PhotoCapabilities* capabilities() { return capabilities_.get(); }
 
  private:
-  friend class base::RefCounted<MockImageCaptureClient>;
+  friend class base::RefCountedThreadSafe<MockImageCaptureClient>;
   virtual ~MockImageCaptureClient() {}
 
   mojom::PhotoCapabilitiesPtr capabilities_;
diff --git a/ppapi/proxy/raw_var_data.cc b/ppapi/proxy/raw_var_data.cc
index 9dbd75b..117e356 100644
--- a/ppapi/proxy/raw_var_data.cc
+++ b/ppapi/proxy/raw_var_data.cc
@@ -198,6 +198,8 @@
       return nullptr;
     PP_VarType var_type = static_cast<PP_VarType>(type);
     result->data_.push_back(base::WrapUnique(RawVarData::Create(var_type)));
+    if (!result->data_.back())
+      return nullptr;
     if (!result->data_.back()->Read(var_type, m, iter))
       return nullptr;
   }
diff --git a/third_party/WebKit/LayoutTests/TestExpectations b/third_party/WebKit/LayoutTests/TestExpectations
index 0b8ce17..f4f1d110 100644
--- a/third_party/WebKit/LayoutTests/TestExpectations
+++ b/third_party/WebKit/LayoutTests/TestExpectations
@@ -1169,8 +1169,7 @@
 crbug.com/492664 external/csswg-test/css-writing-modes-3/line-box-direction-vrl-009.xht [ Failure ]
 
 crbug.com/637255 [ Win10 ] media/video-transformed.html [ Pass Failure ]
-# TODO(robertphillips@) restore after Skia DEPS roll
-#crbug.com/637255 [ Win10 ] media/video-layer-crash.html [ Pass Failure ]
+crbug.com/637255 [ Win10 ] media/video-layer-crash.html [ Pass Failure ]
 
 crbug.com/691045 media/autoplay-muted.html [ Pass Timeout ]
 
@@ -2366,4 +2365,3 @@
 crbug.com/691423 [ Mac ] fast/frames/location-change-no-file-access.html [ Failure Pass ]
 
 # Sheriff failures 2017-02-16
-crbug.com/692733 [ Win7 Debug ] compositing/overflow/overflow-positioning.html [ Failure Pass ]
diff --git a/third_party/WebKit/LayoutTests/animations/custom-properties/angle-type-interpolation-expected.txt b/third_party/WebKit/LayoutTests/animations/custom-properties/angle-type-interpolation-expected.txt
new file mode 100644
index 0000000..186e589
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/animations/custom-properties/angle-type-interpolation-expected.txt
@@ -0,0 +1,109 @@
+This is a testharness.js-based test.
+PASS This test uses interpolation-test.js. 
+FAIL CSS Transitions: property <--angle> from neutral to [20deg] at (-0.3) is [20deg] assert_equals: expected "7deg " but got "20deg "
+FAIL CSS Transitions: property <--angle> from neutral to [20deg] at (0) is [20deg] assert_equals: expected "10deg " but got "20deg "
+FAIL CSS Transitions: property <--angle> from neutral to [20deg] at (0.5) is [20deg] assert_equals: expected "15deg " but got "20deg "
+PASS CSS Transitions: property <--angle> from neutral to [20deg] at (1) is [20deg] 
+FAIL CSS Transitions: property <--angle> from neutral to [20deg] at (1.5) is [20deg] assert_equals: expected "25deg " but got "20deg "
+FAIL CSS Transitions: property <--angle> from [initial] to [20deg] at (-0.3) is [20deg] assert_equals: expected "46deg " but got "20deg "
+FAIL CSS Transitions: property <--angle> from [initial] to [20deg] at (0) is [20deg] assert_equals: expected "40deg " but got "20deg "
+FAIL CSS Transitions: property <--angle> from [initial] to [20deg] at (0.5) is [20deg] assert_equals: expected "30deg " but got "20deg "
+PASS CSS Transitions: property <--angle> from [initial] to [20deg] at (1) is [20deg] 
+FAIL CSS Transitions: property <--angle> from [initial] to [20deg] at (1.5) is [20deg] assert_equals: expected "10deg " but got "20deg "
+FAIL CSS Transitions: property <--angle> from [inherit] to [20deg] at (-0.3) is [20deg] assert_equals: expected "33deg " but got "20deg "
+FAIL CSS Transitions: property <--angle> from [inherit] to [20deg] at (0) is [20deg] assert_equals: expected "30deg " but got "20deg "
+FAIL CSS Transitions: property <--angle> from [inherit] to [20deg] at (0.5) is [20deg] assert_equals: expected "25deg " but got "20deg "
+PASS CSS Transitions: property <--angle> from [inherit] to [20deg] at (1) is [20deg] 
+FAIL CSS Transitions: property <--angle> from [inherit] to [20deg] at (1.5) is [20deg] assert_equals: expected "15deg " but got "20deg "
+FAIL CSS Transitions: property <--angle> from [unset] to [20deg] at (-0.3) is [20deg] assert_equals: expected "46deg " but got "20deg "
+FAIL CSS Transitions: property <--angle> from [unset] to [20deg] at (0) is [20deg] assert_equals: expected "40deg " but got "20deg "
+FAIL CSS Transitions: property <--angle> from [unset] to [20deg] at (0.5) is [20deg] assert_equals: expected "30deg " but got "20deg "
+PASS CSS Transitions: property <--angle> from [unset] to [20deg] at (1) is [20deg] 
+FAIL CSS Transitions: property <--angle> from [unset] to [20deg] at (1.5) is [20deg] assert_equals: expected "10deg " but got "20deg "
+FAIL CSS Transitions: property <--angle> from [-10deg] to [10deg] at (-0.3) is [10deg] assert_equals: expected "- 16deg " but got "10deg "
+FAIL CSS Transitions: property <--angle> from [-10deg] to [10deg] at (0) is [10deg] assert_equals: expected "- 10deg " but got "10deg "
+FAIL CSS Transitions: property <--angle> from [-10deg] to [10deg] at (0.5) is [10deg] assert_equals: expected "0deg " but got "10deg "
+PASS CSS Transitions: property <--angle> from [-10deg] to [10deg] at (1) is [10deg] 
+FAIL CSS Transitions: property <--angle> from [-10deg] to [10deg] at (1.5) is [10deg] assert_equals: expected "20deg " but got "10deg "
+FAIL CSS Transitions: property <--angle> from [10rad] to [20rad] at (-0.3) is [20rad] assert_equals: expected "401.07deg " but got "20rad "
+FAIL CSS Transitions: property <--angle> from [10rad] to [20rad] at (0) is [20rad] assert_equals: expected "572.96deg " but got "20rad "
+FAIL CSS Transitions: property <--angle> from [10rad] to [20rad] at (0.5) is [20rad] assert_equals: expected "859.44deg " but got "20rad "
+FAIL CSS Transitions: property <--angle> from [10rad] to [20rad] at (1) is [20rad] assert_equals: expected "1145.92deg " but got "20rad "
+FAIL CSS Transitions: property <--angle> from [10rad] to [20rad] at (1.5) is [20rad] assert_equals: expected "1432.39deg " but got "20rad "
+FAIL CSS Transitions: property <--angle> from [200grad] to [90deg] at (-0.3) is [90deg] assert_equals: expected "207deg " but got "90deg "
+FAIL CSS Transitions: property <--angle> from [200grad] to [90deg] at (0) is [90deg] assert_equals: expected "180deg " but got "90deg "
+FAIL CSS Transitions: property <--angle> from [200grad] to [90deg] at (0.5) is [90deg] assert_equals: expected "135deg " but got "90deg "
+PASS CSS Transitions: property <--angle> from [200grad] to [90deg] at (1) is [90deg] 
+FAIL CSS Transitions: property <--angle> from [200grad] to [90deg] at (1.5) is [90deg] assert_equals: expected "45deg " but got "90deg "
+PASS CSS Animations: property <--angle> from neutral to [20deg] at (-0.3) is [7deg] 
+PASS CSS Animations: property <--angle> from neutral to [20deg] at (0) is [10deg] 
+PASS CSS Animations: property <--angle> from neutral to [20deg] at (0.5) is [15deg] 
+PASS CSS Animations: property <--angle> from neutral to [20deg] at (1) is [20deg] 
+PASS CSS Animations: property <--angle> from neutral to [20deg] at (1.5) is [25deg] 
+PASS CSS Animations: property <--angle> from [initial] to [20deg] at (-0.3) is [46deg] 
+PASS CSS Animations: property <--angle> from [initial] to [20deg] at (0) is [40deg] 
+PASS CSS Animations: property <--angle> from [initial] to [20deg] at (0.5) is [30deg] 
+PASS CSS Animations: property <--angle> from [initial] to [20deg] at (1) is [20deg] 
+PASS CSS Animations: property <--angle> from [initial] to [20deg] at (1.5) is [10deg] 
+PASS CSS Animations: property <--angle> from [inherit] to [20deg] at (-0.3) is [33deg] 
+PASS CSS Animations: property <--angle> from [inherit] to [20deg] at (0) is [30deg] 
+PASS CSS Animations: property <--angle> from [inherit] to [20deg] at (0.5) is [25deg] 
+PASS CSS Animations: property <--angle> from [inherit] to [20deg] at (1) is [20deg] 
+PASS CSS Animations: property <--angle> from [inherit] to [20deg] at (1.5) is [15deg] 
+PASS CSS Animations: property <--angle> from [unset] to [20deg] at (-0.3) is [46deg] 
+PASS CSS Animations: property <--angle> from [unset] to [20deg] at (0) is [40deg] 
+PASS CSS Animations: property <--angle> from [unset] to [20deg] at (0.5) is [30deg] 
+PASS CSS Animations: property <--angle> from [unset] to [20deg] at (1) is [20deg] 
+PASS CSS Animations: property <--angle> from [unset] to [20deg] at (1.5) is [10deg] 
+PASS CSS Animations: property <--angle> from [-10deg] to [10deg] at (-0.3) is [-16deg] 
+PASS CSS Animations: property <--angle> from [-10deg] to [10deg] at (0) is [-10deg] 
+PASS CSS Animations: property <--angle> from [-10deg] to [10deg] at (0.5) is [0deg] 
+PASS CSS Animations: property <--angle> from [-10deg] to [10deg] at (1) is [10deg] 
+PASS CSS Animations: property <--angle> from [-10deg] to [10deg] at (1.5) is [20deg] 
+PASS CSS Animations: property <--angle> from [10rad] to [20rad] at (-0.3) is [401.07deg] 
+PASS CSS Animations: property <--angle> from [10rad] to [20rad] at (0) is [572.958deg] 
+PASS CSS Animations: property <--angle> from [10rad] to [20rad] at (0.5) is [859.437deg] 
+PASS CSS Animations: property <--angle> from [10rad] to [20rad] at (1) is [1145.92deg] 
+PASS CSS Animations: property <--angle> from [10rad] to [20rad] at (1.5) is [1432.39deg] 
+PASS CSS Animations: property <--angle> from [200grad] to [90deg] at (-0.3) is [207deg] 
+PASS CSS Animations: property <--angle> from [200grad] to [90deg] at (0) is [180deg] 
+PASS CSS Animations: property <--angle> from [200grad] to [90deg] at (0.5) is [135deg] 
+PASS CSS Animations: property <--angle> from [200grad] to [90deg] at (1) is [90deg] 
+PASS CSS Animations: property <--angle> from [200grad] to [90deg] at (1.5) is [45deg] 
+PASS Web Animations: property <--angle> from neutral to [20deg] at (-0.3) is [7deg] 
+PASS Web Animations: property <--angle> from neutral to [20deg] at (0) is [10deg] 
+PASS Web Animations: property <--angle> from neutral to [20deg] at (0.5) is [15deg] 
+PASS Web Animations: property <--angle> from neutral to [20deg] at (1) is [20deg] 
+PASS Web Animations: property <--angle> from neutral to [20deg] at (1.5) is [25deg] 
+PASS Web Animations: property <--angle> from [initial] to [20deg] at (-0.3) is [46deg] 
+PASS Web Animations: property <--angle> from [initial] to [20deg] at (0) is [40deg] 
+PASS Web Animations: property <--angle> from [initial] to [20deg] at (0.5) is [30deg] 
+PASS Web Animations: property <--angle> from [initial] to [20deg] at (1) is [20deg] 
+PASS Web Animations: property <--angle> from [initial] to [20deg] at (1.5) is [10deg] 
+PASS Web Animations: property <--angle> from [inherit] to [20deg] at (-0.3) is [33deg] 
+PASS Web Animations: property <--angle> from [inherit] to [20deg] at (0) is [30deg] 
+PASS Web Animations: property <--angle> from [inherit] to [20deg] at (0.5) is [25deg] 
+PASS Web Animations: property <--angle> from [inherit] to [20deg] at (1) is [20deg] 
+PASS Web Animations: property <--angle> from [inherit] to [20deg] at (1.5) is [15deg] 
+PASS Web Animations: property <--angle> from [unset] to [20deg] at (-0.3) is [46deg] 
+PASS Web Animations: property <--angle> from [unset] to [20deg] at (0) is [40deg] 
+PASS Web Animations: property <--angle> from [unset] to [20deg] at (0.5) is [30deg] 
+PASS Web Animations: property <--angle> from [unset] to [20deg] at (1) is [20deg] 
+PASS Web Animations: property <--angle> from [unset] to [20deg] at (1.5) is [10deg] 
+PASS Web Animations: property <--angle> from [-10deg] to [10deg] at (-0.3) is [-16deg] 
+PASS Web Animations: property <--angle> from [-10deg] to [10deg] at (0) is [-10deg] 
+PASS Web Animations: property <--angle> from [-10deg] to [10deg] at (0.5) is [0deg] 
+PASS Web Animations: property <--angle> from [-10deg] to [10deg] at (1) is [10deg] 
+PASS Web Animations: property <--angle> from [-10deg] to [10deg] at (1.5) is [20deg] 
+PASS Web Animations: property <--angle> from [10rad] to [20rad] at (-0.3) is [401.07deg] 
+PASS Web Animations: property <--angle> from [10rad] to [20rad] at (0) is [572.958deg] 
+PASS Web Animations: property <--angle> from [10rad] to [20rad] at (0.5) is [859.437deg] 
+PASS Web Animations: property <--angle> from [10rad] to [20rad] at (1) is [1145.92deg] 
+PASS Web Animations: property <--angle> from [10rad] to [20rad] at (1.5) is [1432.39deg] 
+PASS Web Animations: property <--angle> from [200grad] to [90deg] at (-0.3) is [207deg] 
+PASS Web Animations: property <--angle> from [200grad] to [90deg] at (0) is [180deg] 
+PASS Web Animations: property <--angle> from [200grad] to [90deg] at (0.5) is [135deg] 
+PASS Web Animations: property <--angle> from [200grad] to [90deg] at (1) is [90deg] 
+PASS Web Animations: property <--angle> from [200grad] to [90deg] at (1.5) is [45deg] 
+Harness: the test ran to completion.
+
diff --git a/third_party/WebKit/LayoutTests/animations/custom-properties/angle-type-interpolation.html b/third_party/WebKit/LayoutTests/animations/custom-properties/angle-type-interpolation.html
new file mode 100644
index 0000000..7085a599
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/animations/custom-properties/angle-type-interpolation.html
@@ -0,0 +1,104 @@
+<!DOCTYPE html>
+<meta charset="UTF-8">
+<style>
+.parent {
+  --angle: 30deg;
+}
+.target {
+  --angle: 10deg;
+}
+</style>
+<body>
+<script src="../interpolation/resources/interpolation-test.js"></script>
+<script>
+CSS.registerProperty({
+  name: '--angle',
+  syntax: '<angle>',
+  initialValue: '40deg',
+});
+
+assertInterpolation({
+  property: '--angle',
+  from: neutralKeyframe,
+  to: '20deg',
+}, [
+  {at: -0.3, is: '7deg'},
+  {at: 0, is: '10deg'},
+  {at: 0.5, is: '15deg'},
+  {at: 1, is: '20deg'},
+  {at: 1.5, is: '25deg'},
+]);
+
+assertInterpolation({
+  property: '--angle',
+  from: 'initial',
+  to: '20deg',
+}, [
+  {at: -0.3, is: '46deg'},
+  {at: 0, is: '40deg'},
+  {at: 0.5, is: '30deg'},
+  {at: 1, is: '20deg'},
+  {at: 1.5, is: '10deg'},
+]);
+
+assertInterpolation({
+  property: '--angle',
+  from: 'inherit',
+  to: '20deg',
+}, [
+  {at: -0.3, is: '33deg'},
+  {at: 0, is: '30deg'},
+  {at: 0.5, is: '25deg'},
+  {at: 1, is: '20deg'},
+  {at: 1.5, is: '15deg'},
+]);
+
+assertInterpolation({
+  property: '--angle',
+  from: 'unset',
+  to: '20deg',
+}, [
+  {at: -0.3, is: '46deg'},
+  {at: 0, is: '40deg'},
+  {at: 0.5, is: '30deg'},
+  {at: 1, is: '20deg'},
+  {at: 1.5, is: '10deg'},
+]);
+
+assertInterpolation({
+  property: '--angle',
+  from: '-10deg',
+  to: '10deg',
+}, [
+  {at: -0.3, is: '-16deg'},
+  {at: 0, is: '-10deg'},
+  {at: 0.5, is: '0deg'},
+  {at: 1, is: '10deg'},
+  {at: 1.5, is: '20deg'},
+]);
+
+assertInterpolation({
+  property: '--angle',
+  from: '10rad',
+  to: '20rad',
+}, [
+  {at: -0.3, is: '401.07deg'},
+  {at: 0, is: '572.958deg'},
+  {at: 0.5, is: '859.437deg'},
+  {at: 1, is: '1145.92deg'},
+  {at: 1.5, is: '1432.39deg'},
+]);
+
+assertInterpolation({
+  property: '--angle',
+  from: '200grad',
+  to: '90deg',
+}, [
+  {at: -0.3, is: '207deg'},
+  {at: 0, is: '180deg'},
+  {at: 0.5, is: '135deg'},
+  {at: 1, is: '90deg'},
+  {at: 1.5, is: '45deg'},
+]);
+</script>
+</body>
diff --git a/third_party/WebKit/LayoutTests/animations/custom-properties/length-percentage-type-interpolation-expected.txt b/third_party/WebKit/LayoutTests/animations/custom-properties/length-percentage-type-interpolation-expected.txt
new file mode 100644
index 0000000..555c0a1
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/animations/custom-properties/length-percentage-type-interpolation-expected.txt
@@ -0,0 +1,124 @@
+This is a testharness.js-based test.
+PASS This test uses interpolation-test.js. 
+FAIL CSS Transitions: property <--length-percentage> from neutral to [20px] at (-0.3) is [20px] assert_equals: expected "7px " but got "20px "
+FAIL CSS Transitions: property <--length-percentage> from neutral to [20px] at (0) is [20px] assert_equals: expected "10px " but got "20px "
+FAIL CSS Transitions: property <--length-percentage> from neutral to [20px] at (0.5) is [20px] assert_equals: expected "15px " but got "20px "
+PASS CSS Transitions: property <--length-percentage> from neutral to [20px] at (1) is [20px] 
+FAIL CSS Transitions: property <--length-percentage> from neutral to [20px] at (1.5) is [20px] assert_equals: expected "25px " but got "20px "
+FAIL CSS Transitions: property <--length-percentage> from [initial] to [40%] at (-0.3) is [40%] assert_equals: expected "calc ( 52px + 92 % ) " but got "40 % "
+FAIL CSS Transitions: property <--length-percentage> from [initial] to [40%] at (0) is [40%] assert_equals: expected "calc ( 40px + 80 % ) " but got "40 % "
+FAIL CSS Transitions: property <--length-percentage> from [initial] to [40%] at (0.5) is [40%] assert_equals: expected "calc ( 20px + 60 % ) " but got "40 % "
+PASS CSS Transitions: property <--length-percentage> from [initial] to [40%] at (1) is [40%] 
+FAIL CSS Transitions: property <--length-percentage> from [initial] to [40%] at (1.5) is [40%] assert_equals: expected "calc ( - 20px + 20 % ) " but got "40 % "
+FAIL CSS Transitions: property <--length-percentage> from [inherit] to [20px] at (-0.3) is [20px] assert_equals: expected "calc ( - 6px + 52 % ) " but got "20px "
+FAIL CSS Transitions: property <--length-percentage> from [inherit] to [20px] at (0) is [20px] assert_equals: expected "40 % " but got "20px "
+FAIL CSS Transitions: property <--length-percentage> from [inherit] to [20px] at (0.5) is [20px] assert_equals: expected "calc ( 10px + 20 % ) " but got "20px "
+PASS CSS Transitions: property <--length-percentage> from [inherit] to [20px] at (1) is [20px] 
+FAIL CSS Transitions: property <--length-percentage> from [inherit] to [20px] at (1.5) is [20px] assert_equals: expected "calc ( 30px + - 20 % ) " but got "20px "
+FAIL CSS Transitions: property <--length-percentage> from [unset] to [calc(20px + 40%)] at (-0.3) is [calc(20px + 40%)] assert_equals: expected "calc ( 46px + 92 % ) " but got "calc ( 20px + 40 % ) "
+FAIL CSS Transitions: property <--length-percentage> from [unset] to [calc(20px + 40%)] at (0) is [calc(20px + 40%)] assert_equals: expected "calc ( 40px + 80 % ) " but got "calc ( 20px + 40 % ) "
+FAIL CSS Transitions: property <--length-percentage> from [unset] to [calc(20px + 40%)] at (0.5) is [calc(20px + 40%)] assert_equals: expected "calc ( 30px + 60 % ) " but got "calc ( 20px + 40 % ) "
+PASS CSS Transitions: property <--length-percentage> from [unset] to [calc(20px + 40%)] at (1) is [calc(20px + 40%)] 
+FAIL CSS Transitions: property <--length-percentage> from [unset] to [calc(20px + 40%)] at (1.5) is [calc(20px + 40%)] assert_equals: expected "calc ( 10px + 20 % ) " but got "calc ( 20px + 40 % ) "
+FAIL CSS Transitions: property <--length-percentage> from [-10px] to [10px] at (-0.3) is [10px] assert_equals: expected "- 16px " but got "10px "
+FAIL CSS Transitions: property <--length-percentage> from [-10px] to [10px] at (0) is [10px] assert_equals: expected "- 10px " but got "10px "
+FAIL CSS Transitions: property <--length-percentage> from [-10px] to [10px] at (0.5) is [10px] assert_equals: expected "0px " but got "10px "
+PASS CSS Transitions: property <--length-percentage> from [-10px] to [10px] at (1) is [10px] 
+FAIL CSS Transitions: property <--length-percentage> from [-10px] to [10px] at (1.5) is [10px] assert_equals: expected "20px " but got "10px "
+FAIL CSS Transitions: property <--length-percentage> from [10em] to [20em] at (-0.3) is [400px] assert_equals: expected "140px " but got "400px "
+FAIL CSS Transitions: property <--length-percentage> from [10em] to [20em] at (0) is [400px] assert_equals: expected "200px " but got "400px "
+FAIL CSS Transitions: property <--length-percentage> from [10em] to [20em] at (0.5) is [400px] assert_equals: expected "300px " but got "400px "
+PASS CSS Transitions: property <--length-percentage> from [10em] to [20em] at (1) is [400px] 
+FAIL CSS Transitions: property <--length-percentage> from [10em] to [20em] at (1.5) is [400px] assert_equals: expected "500px " but got "400px "
+FAIL CSS Transitions: property <--length-percentage> from [10em] to [100px] at (-0.3) is [100px] assert_equals: expected "230px " but got "100px "
+FAIL CSS Transitions: property <--length-percentage> from [10em] to [100px] at (0) is [100px] assert_equals: expected "200px " but got "100px "
+FAIL CSS Transitions: property <--length-percentage> from [10em] to [100px] at (0.5) is [100px] assert_equals: expected "150px " but got "100px "
+PASS CSS Transitions: property <--length-percentage> from [10em] to [100px] at (1) is [100px] 
+FAIL CSS Transitions: property <--length-percentage> from [10em] to [100px] at (1.5) is [100px] assert_equals: expected "50px " but got "100px "
+FAIL CSS Transitions: property <--length-percentage> from [10em] to [100%] at (-0.3) is [100%] assert_equals: expected "calc ( 260px + - 30 % ) " but got "100 % "
+FAIL CSS Transitions: property <--length-percentage> from [10em] to [100%] at (0) is [100%] assert_equals: expected "200px " but got "100 % "
+FAIL CSS Transitions: property <--length-percentage> from [10em] to [100%] at (0.5) is [100%] assert_equals: expected "calc ( 100px + 50 % ) " but got "100 % "
+PASS CSS Transitions: property <--length-percentage> from [10em] to [100%] at (1) is [100%] 
+FAIL CSS Transitions: property <--length-percentage> from [10em] to [100%] at (1.5) is [100%] assert_equals: expected "calc ( - 100px + 150 % ) " but got "100 % "
+PASS CSS Animations: property <--length-percentage> from neutral to [20px] at (-0.3) is [7px] 
+PASS CSS Animations: property <--length-percentage> from neutral to [20px] at (0) is [10px] 
+PASS CSS Animations: property <--length-percentage> from neutral to [20px] at (0.5) is [15px] 
+PASS CSS Animations: property <--length-percentage> from neutral to [20px] at (1) is [20px] 
+PASS CSS Animations: property <--length-percentage> from neutral to [20px] at (1.5) is [25px] 
+PASS CSS Animations: property <--length-percentage> from [initial] to [40%] at (-0.3) is [calc(52px + 92%)] 
+PASS CSS Animations: property <--length-percentage> from [initial] to [40%] at (0) is [calc(40px + 80%)] 
+PASS CSS Animations: property <--length-percentage> from [initial] to [40%] at (0.5) is [calc(20px + 60%)] 
+PASS CSS Animations: property <--length-percentage> from [initial] to [40%] at (1) is [40%] 
+PASS CSS Animations: property <--length-percentage> from [initial] to [40%] at (1.5) is [calc(-20px + 20%)] 
+PASS CSS Animations: property <--length-percentage> from [inherit] to [20px] at (-0.3) is [calc(-6px + 52%)] 
+PASS CSS Animations: property <--length-percentage> from [inherit] to [20px] at (0) is [40%] 
+PASS CSS Animations: property <--length-percentage> from [inherit] to [20px] at (0.5) is [calc(10px + 20%)] 
+PASS CSS Animations: property <--length-percentage> from [inherit] to [20px] at (1) is [20px] 
+PASS CSS Animations: property <--length-percentage> from [inherit] to [20px] at (1.5) is [calc(30px + -20%)] 
+PASS CSS Animations: property <--length-percentage> from [unset] to [calc(20px + 40%)] at (-0.3) is [calc(46px + 92%)] 
+PASS CSS Animations: property <--length-percentage> from [unset] to [calc(20px + 40%)] at (0) is [calc(40px + 80%)] 
+PASS CSS Animations: property <--length-percentage> from [unset] to [calc(20px + 40%)] at (0.5) is [calc(30px + 60%)] 
+PASS CSS Animations: property <--length-percentage> from [unset] to [calc(20px + 40%)] at (1) is [calc(20px + 40%)] 
+PASS CSS Animations: property <--length-percentage> from [unset] to [calc(20px + 40%)] at (1.5) is [calc(10px + 20%)] 
+PASS CSS Animations: property <--length-percentage> from [-10px] to [10px] at (-0.3) is [-16px] 
+PASS CSS Animations: property <--length-percentage> from [-10px] to [10px] at (0) is [-10px] 
+PASS CSS Animations: property <--length-percentage> from [-10px] to [10px] at (0.5) is [0px] 
+PASS CSS Animations: property <--length-percentage> from [-10px] to [10px] at (1) is [10px] 
+PASS CSS Animations: property <--length-percentage> from [-10px] to [10px] at (1.5) is [20px] 
+PASS CSS Animations: property <--length-percentage> from [10em] to [20em] at (-0.3) is [140px] 
+PASS CSS Animations: property <--length-percentage> from [10em] to [20em] at (0) is [200px] 
+PASS CSS Animations: property <--length-percentage> from [10em] to [20em] at (0.5) is [300px] 
+PASS CSS Animations: property <--length-percentage> from [10em] to [20em] at (1) is [400px] 
+PASS CSS Animations: property <--length-percentage> from [10em] to [20em] at (1.5) is [500px] 
+PASS CSS Animations: property <--length-percentage> from [10em] to [100px] at (-0.3) is [230px] 
+PASS CSS Animations: property <--length-percentage> from [10em] to [100px] at (0) is [200px] 
+PASS CSS Animations: property <--length-percentage> from [10em] to [100px] at (0.5) is [150px] 
+PASS CSS Animations: property <--length-percentage> from [10em] to [100px] at (1) is [100px] 
+PASS CSS Animations: property <--length-percentage> from [10em] to [100px] at (1.5) is [50px] 
+PASS CSS Animations: property <--length-percentage> from [10em] to [100%] at (-0.3) is [calc(260px + -30%)] 
+PASS CSS Animations: property <--length-percentage> from [10em] to [100%] at (0) is [200px] 
+PASS CSS Animations: property <--length-percentage> from [10em] to [100%] at (0.5) is [calc(100px + 50%)] 
+PASS CSS Animations: property <--length-percentage> from [10em] to [100%] at (1) is [100%] 
+PASS CSS Animations: property <--length-percentage> from [10em] to [100%] at (1.5) is [calc(-100px + 150%)] 
+PASS Web Animations: property <--length-percentage> from neutral to [20px] at (-0.3) is [7px] 
+PASS Web Animations: property <--length-percentage> from neutral to [20px] at (0) is [10px] 
+PASS Web Animations: property <--length-percentage> from neutral to [20px] at (0.5) is [15px] 
+PASS Web Animations: property <--length-percentage> from neutral to [20px] at (1) is [20px] 
+PASS Web Animations: property <--length-percentage> from neutral to [20px] at (1.5) is [25px] 
+PASS Web Animations: property <--length-percentage> from [initial] to [40%] at (-0.3) is [calc(52px + 92%)] 
+PASS Web Animations: property <--length-percentage> from [initial] to [40%] at (0) is [calc(40px + 80%)] 
+PASS Web Animations: property <--length-percentage> from [initial] to [40%] at (0.5) is [calc(20px + 60%)] 
+PASS Web Animations: property <--length-percentage> from [initial] to [40%] at (1) is [40%] 
+PASS Web Animations: property <--length-percentage> from [initial] to [40%] at (1.5) is [calc(-20px + 20%)] 
+PASS Web Animations: property <--length-percentage> from [inherit] to [20px] at (-0.3) is [calc(-6px + 52%)] 
+PASS Web Animations: property <--length-percentage> from [inherit] to [20px] at (0) is [40%] 
+PASS Web Animations: property <--length-percentage> from [inherit] to [20px] at (0.5) is [calc(10px + 20%)] 
+PASS Web Animations: property <--length-percentage> from [inherit] to [20px] at (1) is [20px] 
+PASS Web Animations: property <--length-percentage> from [inherit] to [20px] at (1.5) is [calc(30px + -20%)] 
+PASS Web Animations: property <--length-percentage> from [unset] to [calc(20px + 40%)] at (-0.3) is [calc(46px + 92%)] 
+PASS Web Animations: property <--length-percentage> from [unset] to [calc(20px + 40%)] at (0) is [calc(40px + 80%)] 
+PASS Web Animations: property <--length-percentage> from [unset] to [calc(20px + 40%)] at (0.5) is [calc(30px + 60%)] 
+PASS Web Animations: property <--length-percentage> from [unset] to [calc(20px + 40%)] at (1) is [calc(20px + 40%)] 
+PASS Web Animations: property <--length-percentage> from [unset] to [calc(20px + 40%)] at (1.5) is [calc(10px + 20%)] 
+PASS Web Animations: property <--length-percentage> from [-10px] to [10px] at (-0.3) is [-16px] 
+PASS Web Animations: property <--length-percentage> from [-10px] to [10px] at (0) is [-10px] 
+PASS Web Animations: property <--length-percentage> from [-10px] to [10px] at (0.5) is [0px] 
+PASS Web Animations: property <--length-percentage> from [-10px] to [10px] at (1) is [10px] 
+PASS Web Animations: property <--length-percentage> from [-10px] to [10px] at (1.5) is [20px] 
+PASS Web Animations: property <--length-percentage> from [10em] to [20em] at (-0.3) is [140px] 
+PASS Web Animations: property <--length-percentage> from [10em] to [20em] at (0) is [200px] 
+PASS Web Animations: property <--length-percentage> from [10em] to [20em] at (0.5) is [300px] 
+PASS Web Animations: property <--length-percentage> from [10em] to [20em] at (1) is [400px] 
+PASS Web Animations: property <--length-percentage> from [10em] to [20em] at (1.5) is [500px] 
+PASS Web Animations: property <--length-percentage> from [10em] to [100px] at (-0.3) is [230px] 
+PASS Web Animations: property <--length-percentage> from [10em] to [100px] at (0) is [200px] 
+PASS Web Animations: property <--length-percentage> from [10em] to [100px] at (0.5) is [150px] 
+PASS Web Animations: property <--length-percentage> from [10em] to [100px] at (1) is [100px] 
+PASS Web Animations: property <--length-percentage> from [10em] to [100px] at (1.5) is [50px] 
+PASS Web Animations: property <--length-percentage> from [10em] to [100%] at (-0.3) is [calc(260px + -30%)] 
+PASS Web Animations: property <--length-percentage> from [10em] to [100%] at (0) is [200px] 
+PASS Web Animations: property <--length-percentage> from [10em] to [100%] at (0.5) is [calc(100px + 50%)] 
+PASS Web Animations: property <--length-percentage> from [10em] to [100%] at (1) is [100%] 
+PASS Web Animations: property <--length-percentage> from [10em] to [100%] at (1.5) is [calc(-100px + 150%)] 
+Harness: the test ran to completion.
+
diff --git a/third_party/WebKit/LayoutTests/animations/custom-properties/length-percentage-type-interpolation.html b/third_party/WebKit/LayoutTests/animations/custom-properties/length-percentage-type-interpolation.html
new file mode 100644
index 0000000..1786d7b
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/animations/custom-properties/length-percentage-type-interpolation.html
@@ -0,0 +1,119 @@
+<!DOCTYPE html>
+<meta charset="UTF-8">
+<style>
+.parent {
+  --length-percentage: 40%;
+}
+.target {
+  --length-percentage: 10px;
+
+  /* Testing ems. */
+  font-size: 20px;
+}
+</style>
+<body>
+<script src="../interpolation/resources/interpolation-test.js"></script>
+<script>
+CSS.registerProperty({
+  name: '--length-percentage',
+  syntax: '<length-percentage>',
+  initialValue: 'calc(40px + 80%)',
+});
+
+assertInterpolation({
+  property: '--length-percentage',
+  from: neutralKeyframe,
+  to: '20px',
+}, [
+  {at: -0.3, is: '7px'},
+  {at: 0, is: '10px'},
+  {at: 0.5, is: '15px'},
+  {at: 1, is: '20px'},
+  {at: 1.5, is: '25px'},
+]);
+
+assertInterpolation({
+  property: '--length-percentage',
+  from: 'initial',
+  to: '40%',
+}, [
+  {at: -0.3, is: 'calc(52px + 92%)'},
+  {at: 0, is: 'calc(40px + 80%)'},
+  {at: 0.5, is: 'calc(20px + 60%)'},
+  {at: 1, is: '40%'},
+  {at: 1.5, is: 'calc(-20px + 20%)'},
+]);
+
+assertInterpolation({
+  property: '--length-percentage',
+  from: 'inherit',
+  to: '20px',
+}, [
+  {at: -0.3, is: 'calc(-6px + 52%)'},
+  {at: 0, is: '40%'},
+  {at: 0.5, is: 'calc(10px + 20%)'},
+  {at: 1, is: '20px'},
+  {at: 1.5, is: 'calc(30px + -20%)'},
+]);
+
+assertInterpolation({
+  property: '--length-percentage',
+  from: 'unset',
+  to: 'calc(20px + 40%)',
+}, [
+  {at: -0.3, is: 'calc(46px + 92%)'},
+  {at: 0, is: 'calc(40px + 80%)'},
+  {at: 0.5, is: 'calc(30px + 60%)'},
+  {at: 1, is: 'calc(20px + 40%)'},
+  {at: 1.5, is: 'calc(10px + 20%)'},
+]);
+
+assertInterpolation({
+  property: '--length-percentage',
+  from: '-10px',
+  to: '10px',
+}, [
+  {at: -0.3, is: '-16px'},
+  {at: 0, is: '-10px'},
+  {at: 0.5, is: '0px'},
+  {at: 1, is: '10px'},
+  {at: 1.5, is: '20px'},
+]);
+
+assertInterpolation({
+  property: '--length-percentage',
+  from: '10em',
+  to: '20em',
+}, [
+  {at: -0.3, is: '140px'},
+  {at: 0, is: '200px'},
+  {at: 0.5, is: '300px'},
+  {at: 1, is: '400px'},
+  {at: 1.5, is: '500px'},
+]);
+
+assertInterpolation({
+  property: '--length-percentage',
+  from: '10em',
+  to: '100px',
+}, [
+  {at: -0.3, is: '230px'},
+  {at: 0, is: '200px'},
+  {at: 0.5, is: '150px'},
+  {at: 1, is: '100px'},
+  {at: 1.5, is: '50px'},
+]);
+
+assertInterpolation({
+  property: '--length-percentage',
+  from: '10em',
+  to: '100%',
+}, [
+  {at: -0.3, is: 'calc(260px + -30%)'},
+  {at: 0, is: '200px'},
+  {at: 0.5, is: 'calc(100px + 50%)'},
+  {at: 1, is: '100%'},
+  {at: 1.5, is: 'calc(-100px + 150%)'},
+]);
+</script>
+</body>
diff --git a/third_party/WebKit/LayoutTests/animations/custom-properties/length-percentage-type-mismatch-no-interpolation-expected.txt b/third_party/WebKit/LayoutTests/animations/custom-properties/length-percentage-type-mismatch-no-interpolation-expected.txt
new file mode 100644
index 0000000..972234a2
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/animations/custom-properties/length-percentage-type-mismatch-no-interpolation-expected.txt
@@ -0,0 +1,7 @@
+CONSOLE WARNING: line 24: Invalid keyframe value for property --length: 10%
+CONSOLE WARNING: line 35: Invalid keyframe value for property --percentage: 10px
+This is a testharness.js-based test.
+PASS <length> properties don't accept percentages in animation keyframes 
+PASS <percentage> properties don't accept lengths in animation keyframes 
+Harness: the test ran to completion.
+
diff --git a/third_party/WebKit/LayoutTests/animations/custom-properties/length-percentage-type-mismatch-no-interpolation.html b/third_party/WebKit/LayoutTests/animations/custom-properties/length-percentage-type-mismatch-no-interpolation.html
new file mode 100644
index 0000000..5bdf67d
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/animations/custom-properties/length-percentage-type-mismatch-no-interpolation.html
@@ -0,0 +1,45 @@
+<!DOCTYPE html>
+<meta charset="UTF-8">
+<script src="../../resources/testharness.js"></script>
+<script src="../../resources/testharnessreport.js"></script>
+<div id="target"></div>
+<script>
+// The console warnings about "Invalid keyframe value" are expected for this test.
+
+setup(() => {
+  CSS.registerProperty({
+    name: '--length',
+    syntax: '<length>',
+    initialValue: '40px',
+  });
+
+  CSS.registerProperty({
+    name: '--percentage',
+    syntax: '<percentage>',
+    initialValue: '40%',
+  });
+});
+
+test(() => {
+  var animation = target.animate({'--length': ['10%', '100px']}, 1);
+  animation.currentTime = 0;
+  assert_equals(getComputedStyle(target).getPropertyValue('--length'), '40px',
+      'percentage fails to parse and is treated as neutral value');
+  animation.currentTime = 0.5;
+  assert_equals(getComputedStyle(target).getPropertyValue('--length'), '70px',
+      '--length is being animated');
+  animation.cancel();
+}, "<length> properties don't accept percentages in animation keyframes");
+
+test(() => {
+  var animation = target.animate({'--percentage': ['10px', '100%']}, 1);
+  animation.currentTime = 0;
+  assert_equals(getComputedStyle(target).getPropertyValue('--percentage'), '40%',
+      'percentage fails to parse and is treated as neutral value');
+  animation.currentTime = 0.5;
+  assert_equals(getComputedStyle(target).getPropertyValue('--percentage'), '70%',
+      '--percentage is being animated');
+  animation.cancel();
+}, "<percentage> properties don't accept lengths in animation keyframes");
+</script>
+</body>
diff --git a/third_party/WebKit/LayoutTests/animations/custom-properties/number-type-interpolation-expected.txt b/third_party/WebKit/LayoutTests/animations/custom-properties/number-type-interpolation-expected.txt
new file mode 100644
index 0000000..211c1c0
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/animations/custom-properties/number-type-interpolation-expected.txt
@@ -0,0 +1,79 @@
+This is a testharness.js-based test.
+PASS This test uses interpolation-test.js. 
+FAIL CSS Transitions: property <--number> from neutral to [20] at (-0.3) is [20] assert_equals: expected "7 " but got "20 "
+FAIL CSS Transitions: property <--number> from neutral to [20] at (0) is [20] assert_equals: expected "10 " but got "20 "
+FAIL CSS Transitions: property <--number> from neutral to [20] at (0.5) is [20] assert_equals: expected "15 " but got "20 "
+PASS CSS Transitions: property <--number> from neutral to [20] at (1) is [20] 
+FAIL CSS Transitions: property <--number> from neutral to [20] at (1.5) is [20] assert_equals: expected "25 " but got "20 "
+FAIL CSS Transitions: property <--number> from [initial] to [20] at (-0.3) is [20] assert_equals: expected "46 " but got "20 "
+FAIL CSS Transitions: property <--number> from [initial] to [20] at (0) is [20] assert_equals: expected "40 " but got "20 "
+FAIL CSS Transitions: property <--number> from [initial] to [20] at (0.5) is [20] assert_equals: expected "30 " but got "20 "
+PASS CSS Transitions: property <--number> from [initial] to [20] at (1) is [20] 
+FAIL CSS Transitions: property <--number> from [initial] to [20] at (1.5) is [20] assert_equals: expected "10 " but got "20 "
+FAIL CSS Transitions: property <--number> from [inherit] to [20] at (-0.3) is [20] assert_equals: expected "33 " but got "20 "
+FAIL CSS Transitions: property <--number> from [inherit] to [20] at (0) is [20] assert_equals: expected "30 " but got "20 "
+FAIL CSS Transitions: property <--number> from [inherit] to [20] at (0.5) is [20] assert_equals: expected "25 " but got "20 "
+PASS CSS Transitions: property <--number> from [inherit] to [20] at (1) is [20] 
+FAIL CSS Transitions: property <--number> from [inherit] to [20] at (1.5) is [20] assert_equals: expected "15 " but got "20 "
+FAIL CSS Transitions: property <--number> from [unset] to [20] at (-0.3) is [20] assert_equals: expected "46 " but got "20 "
+FAIL CSS Transitions: property <--number> from [unset] to [20] at (0) is [20] assert_equals: expected "40 " but got "20 "
+FAIL CSS Transitions: property <--number> from [unset] to [20] at (0.5) is [20] assert_equals: expected "30 " but got "20 "
+PASS CSS Transitions: property <--number> from [unset] to [20] at (1) is [20] 
+FAIL CSS Transitions: property <--number> from [unset] to [20] at (1.5) is [20] assert_equals: expected "10 " but got "20 "
+FAIL CSS Transitions: property <--number> from [-10] to [10] at (-0.3) is [10] assert_equals: expected "- 16 " but got "10 "
+FAIL CSS Transitions: property <--number> from [-10] to [10] at (0) is [10] assert_equals: expected "- 10 " but got "10 "
+FAIL CSS Transitions: property <--number> from [-10] to [10] at (0.5) is [10] assert_equals: expected "0 " but got "10 "
+PASS CSS Transitions: property <--number> from [-10] to [10] at (1) is [10] 
+FAIL CSS Transitions: property <--number> from [-10] to [10] at (1.5) is [10] assert_equals: expected "20 " but got "10 "
+PASS CSS Animations: property <--number> from neutral to [20] at (-0.3) is [7] 
+PASS CSS Animations: property <--number> from neutral to [20] at (0) is [10] 
+PASS CSS Animations: property <--number> from neutral to [20] at (0.5) is [15] 
+PASS CSS Animations: property <--number> from neutral to [20] at (1) is [20] 
+PASS CSS Animations: property <--number> from neutral to [20] at (1.5) is [25] 
+PASS CSS Animations: property <--number> from [initial] to [20] at (-0.3) is [46] 
+PASS CSS Animations: property <--number> from [initial] to [20] at (0) is [40] 
+PASS CSS Animations: property <--number> from [initial] to [20] at (0.5) is [30] 
+PASS CSS Animations: property <--number> from [initial] to [20] at (1) is [20] 
+PASS CSS Animations: property <--number> from [initial] to [20] at (1.5) is [10] 
+PASS CSS Animations: property <--number> from [inherit] to [20] at (-0.3) is [33] 
+PASS CSS Animations: property <--number> from [inherit] to [20] at (0) is [30] 
+PASS CSS Animations: property <--number> from [inherit] to [20] at (0.5) is [25] 
+PASS CSS Animations: property <--number> from [inherit] to [20] at (1) is [20] 
+PASS CSS Animations: property <--number> from [inherit] to [20] at (1.5) is [15] 
+PASS CSS Animations: property <--number> from [unset] to [20] at (-0.3) is [46] 
+PASS CSS Animations: property <--number> from [unset] to [20] at (0) is [40] 
+PASS CSS Animations: property <--number> from [unset] to [20] at (0.5) is [30] 
+PASS CSS Animations: property <--number> from [unset] to [20] at (1) is [20] 
+PASS CSS Animations: property <--number> from [unset] to [20] at (1.5) is [10] 
+PASS CSS Animations: property <--number> from [-10] to [10] at (-0.3) is [-16] 
+PASS CSS Animations: property <--number> from [-10] to [10] at (0) is [-10] 
+PASS CSS Animations: property <--number> from [-10] to [10] at (0.5) is [0] 
+PASS CSS Animations: property <--number> from [-10] to [10] at (1) is [10] 
+PASS CSS Animations: property <--number> from [-10] to [10] at (1.5) is [20] 
+PASS Web Animations: property <--number> from neutral to [20] at (-0.3) is [7] 
+PASS Web Animations: property <--number> from neutral to [20] at (0) is [10] 
+PASS Web Animations: property <--number> from neutral to [20] at (0.5) is [15] 
+PASS Web Animations: property <--number> from neutral to [20] at (1) is [20] 
+PASS Web Animations: property <--number> from neutral to [20] at (1.5) is [25] 
+PASS Web Animations: property <--number> from [initial] to [20] at (-0.3) is [46] 
+PASS Web Animations: property <--number> from [initial] to [20] at (0) is [40] 
+PASS Web Animations: property <--number> from [initial] to [20] at (0.5) is [30] 
+PASS Web Animations: property <--number> from [initial] to [20] at (1) is [20] 
+PASS Web Animations: property <--number> from [initial] to [20] at (1.5) is [10] 
+PASS Web Animations: property <--number> from [inherit] to [20] at (-0.3) is [33] 
+PASS Web Animations: property <--number> from [inherit] to [20] at (0) is [30] 
+PASS Web Animations: property <--number> from [inherit] to [20] at (0.5) is [25] 
+PASS Web Animations: property <--number> from [inherit] to [20] at (1) is [20] 
+PASS Web Animations: property <--number> from [inherit] to [20] at (1.5) is [15] 
+PASS Web Animations: property <--number> from [unset] to [20] at (-0.3) is [46] 
+PASS Web Animations: property <--number> from [unset] to [20] at (0) is [40] 
+PASS Web Animations: property <--number> from [unset] to [20] at (0.5) is [30] 
+PASS Web Animations: property <--number> from [unset] to [20] at (1) is [20] 
+PASS Web Animations: property <--number> from [unset] to [20] at (1.5) is [10] 
+PASS Web Animations: property <--number> from [-10] to [10] at (-0.3) is [-16] 
+PASS Web Animations: property <--number> from [-10] to [10] at (0) is [-10] 
+PASS Web Animations: property <--number> from [-10] to [10] at (0.5) is [0] 
+PASS Web Animations: property <--number> from [-10] to [10] at (1) is [10] 
+PASS Web Animations: property <--number> from [-10] to [10] at (1.5) is [20] 
+Harness: the test ran to completion.
+
diff --git a/third_party/WebKit/LayoutTests/animations/custom-properties/number-type-interpolation.html b/third_party/WebKit/LayoutTests/animations/custom-properties/number-type-interpolation.html
new file mode 100644
index 0000000..051ae16
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/animations/custom-properties/number-type-interpolation.html
@@ -0,0 +1,80 @@
+<!DOCTYPE html>
+<meta charset="UTF-8">
+<style>
+.parent {
+  --number: 30;
+}
+.target {
+  --number: 10;
+}
+</style>
+<body>
+<script src="../interpolation/resources/interpolation-test.js"></script>
+<script>
+CSS.registerProperty({
+  name: '--number',
+  syntax: '<number>',
+  initialValue: '40',
+});
+
+assertInterpolation({
+  property: '--number',
+  from: neutralKeyframe,
+  to: '20',
+}, [
+  {at: -0.3, is: '7'},
+  {at: 0, is: '10'},
+  {at: 0.5, is: '15'},
+  {at: 1, is: '20'},
+  {at: 1.5, is: '25'},
+]);
+
+assertInterpolation({
+  property: '--number',
+  from: 'initial',
+  to: '20',
+}, [
+  {at: -0.3, is: '46'},
+  {at: 0, is: '40'},
+  {at: 0.5, is: '30'},
+  {at: 1, is: '20'},
+  {at: 1.5, is: '10'},
+]);
+
+assertInterpolation({
+  property: '--number',
+  from: 'inherit',
+  to: '20',
+}, [
+  {at: -0.3, is: '33'},
+  {at: 0, is: '30'},
+  {at: 0.5, is: '25'},
+  {at: 1, is: '20'},
+  {at: 1.5, is: '15'},
+]);
+
+assertInterpolation({
+  property: '--number',
+  from: 'unset',
+  to: '20',
+}, [
+  {at: -0.3, is: '46'},
+  {at: 0, is: '40'},
+  {at: 0.5, is: '30'},
+  {at: 1, is: '20'},
+  {at: 1.5, is: '10'},
+]);
+
+assertInterpolation({
+  property: '--number',
+  from: '-10',
+  to: '10',
+}, [
+  {at: -0.3, is: '-16'},
+  {at: 0, is: '-10'},
+  {at: 0.5, is: '0'},
+  {at: 1, is: '10'},
+  {at: 1.5, is: '20'}
+]);
+</script>
+</body>
diff --git a/third_party/WebKit/LayoutTests/animations/custom-properties/percentage-type-interpolation-expected.txt b/third_party/WebKit/LayoutTests/animations/custom-properties/percentage-type-interpolation-expected.txt
new file mode 100644
index 0000000..589849f7
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/animations/custom-properties/percentage-type-interpolation-expected.txt
@@ -0,0 +1,79 @@
+This is a testharness.js-based test.
+PASS This test uses interpolation-test.js. 
+FAIL CSS Transitions: property <--percentage> from neutral to [20%] at (-0.3) is [20%] assert_equals: expected "7 % " but got "20 % "
+FAIL CSS Transitions: property <--percentage> from neutral to [20%] at (0) is [20%] assert_equals: expected "10 % " but got "20 % "
+FAIL CSS Transitions: property <--percentage> from neutral to [20%] at (0.5) is [20%] assert_equals: expected "15 % " but got "20 % "
+PASS CSS Transitions: property <--percentage> from neutral to [20%] at (1) is [20%] 
+FAIL CSS Transitions: property <--percentage> from neutral to [20%] at (1.5) is [20%] assert_equals: expected "25 % " but got "20 % "
+FAIL CSS Transitions: property <--percentage> from [initial] to [20%] at (-0.3) is [20%] assert_equals: expected "46 % " but got "20 % "
+FAIL CSS Transitions: property <--percentage> from [initial] to [20%] at (0) is [20%] assert_equals: expected "40 % " but got "20 % "
+FAIL CSS Transitions: property <--percentage> from [initial] to [20%] at (0.5) is [20%] assert_equals: expected "30 % " but got "20 % "
+PASS CSS Transitions: property <--percentage> from [initial] to [20%] at (1) is [20%] 
+FAIL CSS Transitions: property <--percentage> from [initial] to [20%] at (1.5) is [20%] assert_equals: expected "10 % " but got "20 % "
+FAIL CSS Transitions: property <--percentage> from [inherit] to [20%] at (-0.3) is [20%] assert_equals: expected "33 % " but got "20 % "
+FAIL CSS Transitions: property <--percentage> from [inherit] to [20%] at (0) is [20%] assert_equals: expected "30 % " but got "20 % "
+FAIL CSS Transitions: property <--percentage> from [inherit] to [20%] at (0.5) is [20%] assert_equals: expected "25 % " but got "20 % "
+PASS CSS Transitions: property <--percentage> from [inherit] to [20%] at (1) is [20%] 
+FAIL CSS Transitions: property <--percentage> from [inherit] to [20%] at (1.5) is [20%] assert_equals: expected "15 % " but got "20 % "
+FAIL CSS Transitions: property <--percentage> from [unset] to [20%] at (-0.3) is [20%] assert_equals: expected "46 % " but got "20 % "
+FAIL CSS Transitions: property <--percentage> from [unset] to [20%] at (0) is [20%] assert_equals: expected "40 % " but got "20 % "
+FAIL CSS Transitions: property <--percentage> from [unset] to [20%] at (0.5) is [20%] assert_equals: expected "30 % " but got "20 % "
+PASS CSS Transitions: property <--percentage> from [unset] to [20%] at (1) is [20%] 
+FAIL CSS Transitions: property <--percentage> from [unset] to [20%] at (1.5) is [20%] assert_equals: expected "10 % " but got "20 % "
+FAIL CSS Transitions: property <--percentage> from [-10%] to [10%] at (-0.3) is [10%] assert_equals: expected "- 16 % " but got "10 % "
+FAIL CSS Transitions: property <--percentage> from [-10%] to [10%] at (0) is [10%] assert_equals: expected "- 10 % " but got "10 % "
+FAIL CSS Transitions: property <--percentage> from [-10%] to [10%] at (0.5) is [10%] assert_equals: expected "0 % " but got "10 % "
+PASS CSS Transitions: property <--percentage> from [-10%] to [10%] at (1) is [10%] 
+FAIL CSS Transitions: property <--percentage> from [-10%] to [10%] at (1.5) is [10%] assert_equals: expected "20 % " but got "10 % "
+PASS CSS Animations: property <--percentage> from neutral to [20%] at (-0.3) is [7%] 
+PASS CSS Animations: property <--percentage> from neutral to [20%] at (0) is [10%] 
+PASS CSS Animations: property <--percentage> from neutral to [20%] at (0.5) is [15%] 
+PASS CSS Animations: property <--percentage> from neutral to [20%] at (1) is [20%] 
+PASS CSS Animations: property <--percentage> from neutral to [20%] at (1.5) is [25%] 
+PASS CSS Animations: property <--percentage> from [initial] to [20%] at (-0.3) is [46%] 
+PASS CSS Animations: property <--percentage> from [initial] to [20%] at (0) is [40%] 
+PASS CSS Animations: property <--percentage> from [initial] to [20%] at (0.5) is [30%] 
+PASS CSS Animations: property <--percentage> from [initial] to [20%] at (1) is [20%] 
+PASS CSS Animations: property <--percentage> from [initial] to [20%] at (1.5) is [10%] 
+PASS CSS Animations: property <--percentage> from [inherit] to [20%] at (-0.3) is [33%] 
+PASS CSS Animations: property <--percentage> from [inherit] to [20%] at (0) is [30%] 
+PASS CSS Animations: property <--percentage> from [inherit] to [20%] at (0.5) is [25%] 
+PASS CSS Animations: property <--percentage> from [inherit] to [20%] at (1) is [20%] 
+PASS CSS Animations: property <--percentage> from [inherit] to [20%] at (1.5) is [15%] 
+PASS CSS Animations: property <--percentage> from [unset] to [20%] at (-0.3) is [46%] 
+PASS CSS Animations: property <--percentage> from [unset] to [20%] at (0) is [40%] 
+PASS CSS Animations: property <--percentage> from [unset] to [20%] at (0.5) is [30%] 
+PASS CSS Animations: property <--percentage> from [unset] to [20%] at (1) is [20%] 
+PASS CSS Animations: property <--percentage> from [unset] to [20%] at (1.5) is [10%] 
+PASS CSS Animations: property <--percentage> from [-10%] to [10%] at (-0.3) is [-16%] 
+PASS CSS Animations: property <--percentage> from [-10%] to [10%] at (0) is [-10%] 
+PASS CSS Animations: property <--percentage> from [-10%] to [10%] at (0.5) is [0%] 
+PASS CSS Animations: property <--percentage> from [-10%] to [10%] at (1) is [10%] 
+PASS CSS Animations: property <--percentage> from [-10%] to [10%] at (1.5) is [20%] 
+PASS Web Animations: property <--percentage> from neutral to [20%] at (-0.3) is [7%] 
+PASS Web Animations: property <--percentage> from neutral to [20%] at (0) is [10%] 
+PASS Web Animations: property <--percentage> from neutral to [20%] at (0.5) is [15%] 
+PASS Web Animations: property <--percentage> from neutral to [20%] at (1) is [20%] 
+PASS Web Animations: property <--percentage> from neutral to [20%] at (1.5) is [25%] 
+PASS Web Animations: property <--percentage> from [initial] to [20%] at (-0.3) is [46%] 
+PASS Web Animations: property <--percentage> from [initial] to [20%] at (0) is [40%] 
+PASS Web Animations: property <--percentage> from [initial] to [20%] at (0.5) is [30%] 
+PASS Web Animations: property <--percentage> from [initial] to [20%] at (1) is [20%] 
+PASS Web Animations: property <--percentage> from [initial] to [20%] at (1.5) is [10%] 
+PASS Web Animations: property <--percentage> from [inherit] to [20%] at (-0.3) is [33%] 
+PASS Web Animations: property <--percentage> from [inherit] to [20%] at (0) is [30%] 
+PASS Web Animations: property <--percentage> from [inherit] to [20%] at (0.5) is [25%] 
+PASS Web Animations: property <--percentage> from [inherit] to [20%] at (1) is [20%] 
+PASS Web Animations: property <--percentage> from [inherit] to [20%] at (1.5) is [15%] 
+PASS Web Animations: property <--percentage> from [unset] to [20%] at (-0.3) is [46%] 
+PASS Web Animations: property <--percentage> from [unset] to [20%] at (0) is [40%] 
+PASS Web Animations: property <--percentage> from [unset] to [20%] at (0.5) is [30%] 
+PASS Web Animations: property <--percentage> from [unset] to [20%] at (1) is [20%] 
+PASS Web Animations: property <--percentage> from [unset] to [20%] at (1.5) is [10%] 
+PASS Web Animations: property <--percentage> from [-10%] to [10%] at (-0.3) is [-16%] 
+PASS Web Animations: property <--percentage> from [-10%] to [10%] at (0) is [-10%] 
+PASS Web Animations: property <--percentage> from [-10%] to [10%] at (0.5) is [0%] 
+PASS Web Animations: property <--percentage> from [-10%] to [10%] at (1) is [10%] 
+PASS Web Animations: property <--percentage> from [-10%] to [10%] at (1.5) is [20%] 
+Harness: the test ran to completion.
+
diff --git a/third_party/WebKit/LayoutTests/animations/custom-properties/percentage-type-interpolation.html b/third_party/WebKit/LayoutTests/animations/custom-properties/percentage-type-interpolation.html
new file mode 100644
index 0000000..9addfd96
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/animations/custom-properties/percentage-type-interpolation.html
@@ -0,0 +1,80 @@
+<!DOCTYPE html>
+<meta charset="UTF-8">
+<style>
+.parent {
+  --percentage: 30%;
+}
+.target {
+  --percentage: 10%;
+}
+</style>
+<body>
+<script src="../interpolation/resources/interpolation-test.js"></script>
+<script>
+CSS.registerProperty({
+  name: '--percentage',
+  syntax: '<percentage>',
+  initialValue: '40%',
+});
+
+assertInterpolation({
+  property: '--percentage',
+  from: neutralKeyframe,
+  to: '20%',
+}, [
+  {at: -0.3, is: '7%'},
+  {at: 0, is: '10%'},
+  {at: 0.5, is: '15%'},
+  {at: 1, is: '20%'},
+  {at: 1.5, is: '25%'},
+]);
+
+assertInterpolation({
+  property: '--percentage',
+  from: 'initial',
+  to: '20%',
+}, [
+  {at: -0.3, is: '46%'},
+  {at: 0, is: '40%'},
+  {at: 0.5, is: '30%'},
+  {at: 1, is: '20%'},
+  {at: 1.5, is: '10%'},
+]);
+
+assertInterpolation({
+  property: '--percentage',
+  from: 'inherit',
+  to: '20%',
+}, [
+  {at: -0.3, is: '33%'},
+  {at: 0, is: '30%'},
+  {at: 0.5, is: '25%'},
+  {at: 1, is: '20%'},
+  {at: 1.5, is: '15%'},
+]);
+
+assertInterpolation({
+  property: '--percentage',
+  from: 'unset',
+  to: '20%',
+}, [
+  {at: -0.3, is: '46%'},
+  {at: 0, is: '40%'},
+  {at: 0.5, is: '30%'},
+  {at: 1, is: '20%'},
+  {at: 1.5, is: '10%'},
+]);
+
+assertInterpolation({
+  property: '--percentage',
+  from: '-10%',
+  to: '10%',
+}, [
+  {at: -0.3, is: '-16%'},
+  {at: 0, is: '-10%'},
+  {at: 0.5, is: '0%'},
+  {at: 1, is: '10%'},
+  {at: 1.5, is: '20%'},
+]);
+</script>
+</body>
diff --git a/third_party/WebKit/LayoutTests/animations/custom-properties/time-type-interpolation-expected.txt b/third_party/WebKit/LayoutTests/animations/custom-properties/time-type-interpolation-expected.txt
new file mode 100644
index 0000000..2f8b985
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/animations/custom-properties/time-type-interpolation-expected.txt
@@ -0,0 +1,109 @@
+This is a testharness.js-based test.
+PASS This test uses interpolation-test.js. 
+FAIL CSS Transitions: property <--time> from neutral to [20s] at (-0.3) is [20s] assert_equals: expected "7s " but got "20s "
+FAIL CSS Transitions: property <--time> from neutral to [20s] at (0) is [20s] assert_equals: expected "10s " but got "20s "
+FAIL CSS Transitions: property <--time> from neutral to [20s] at (0.5) is [20s] assert_equals: expected "15s " but got "20s "
+PASS CSS Transitions: property <--time> from neutral to [20s] at (1) is [20s] 
+FAIL CSS Transitions: property <--time> from neutral to [20s] at (1.5) is [20s] assert_equals: expected "25s " but got "20s "
+FAIL CSS Transitions: property <--time> from [initial] to [20s] at (-0.3) is [20s] assert_equals: expected "46s " but got "20s "
+FAIL CSS Transitions: property <--time> from [initial] to [20s] at (0) is [20s] assert_equals: expected "40s " but got "20s "
+FAIL CSS Transitions: property <--time> from [initial] to [20s] at (0.5) is [20s] assert_equals: expected "30s " but got "20s "
+PASS CSS Transitions: property <--time> from [initial] to [20s] at (1) is [20s] 
+FAIL CSS Transitions: property <--time> from [initial] to [20s] at (1.5) is [20s] assert_equals: expected "10s " but got "20s "
+FAIL CSS Transitions: property <--time> from [inherit] to [20s] at (-0.3) is [20s] assert_equals: expected "33s " but got "20s "
+FAIL CSS Transitions: property <--time> from [inherit] to [20s] at (0) is [20s] assert_equals: expected "30s " but got "20s "
+FAIL CSS Transitions: property <--time> from [inherit] to [20s] at (0.5) is [20s] assert_equals: expected "25s " but got "20s "
+PASS CSS Transitions: property <--time> from [inherit] to [20s] at (1) is [20s] 
+FAIL CSS Transitions: property <--time> from [inherit] to [20s] at (1.5) is [20s] assert_equals: expected "15s " but got "20s "
+FAIL CSS Transitions: property <--time> from [unset] to [20s] at (-0.3) is [20s] assert_equals: expected "46s " but got "20s "
+FAIL CSS Transitions: property <--time> from [unset] to [20s] at (0) is [20s] assert_equals: expected "40s " but got "20s "
+FAIL CSS Transitions: property <--time> from [unset] to [20s] at (0.5) is [20s] assert_equals: expected "30s " but got "20s "
+PASS CSS Transitions: property <--time> from [unset] to [20s] at (1) is [20s] 
+FAIL CSS Transitions: property <--time> from [unset] to [20s] at (1.5) is [20s] assert_equals: expected "10s " but got "20s "
+FAIL CSS Transitions: property <--time> from [-10s] to [10s] at (-0.3) is [10s] assert_equals: expected "- 16s " but got "10s "
+FAIL CSS Transitions: property <--time> from [-10s] to [10s] at (0) is [10s] assert_equals: expected "- 10s " but got "10s "
+FAIL CSS Transitions: property <--time> from [-10s] to [10s] at (0.5) is [10s] assert_equals: expected "0s " but got "10s "
+PASS CSS Transitions: property <--time> from [-10s] to [10s] at (1) is [10s] 
+FAIL CSS Transitions: property <--time> from [-10s] to [10s] at (1.5) is [10s] assert_equals: expected "20s " but got "10s "
+FAIL CSS Transitions: property <--time> from [100ms] to [200ms] at (-0.3) is [200ms] assert_equals: expected "0.07s " but got "200ms "
+FAIL CSS Transitions: property <--time> from [100ms] to [200ms] at (0) is [200ms] assert_equals: expected "0.1s " but got "200ms "
+FAIL CSS Transitions: property <--time> from [100ms] to [200ms] at (0.5) is [200ms] assert_equals: expected "0.15s " but got "200ms "
+FAIL CSS Transitions: property <--time> from [100ms] to [200ms] at (1) is [200ms] assert_equals: expected "0.2s " but got "200ms "
+FAIL CSS Transitions: property <--time> from [100ms] to [200ms] at (1.5) is [200ms] assert_equals: expected "0.25s " but got "200ms "
+FAIL CSS Transitions: property <--time> from [1000ms] to [11s] at (-0.3) is [11s] assert_equals: expected "- 2s " but got "11s "
+FAIL CSS Transitions: property <--time> from [1000ms] to [11s] at (0) is [11s] assert_equals: expected "1s " but got "11s "
+FAIL CSS Transitions: property <--time> from [1000ms] to [11s] at (0.5) is [11s] assert_equals: expected "6s " but got "11s "
+PASS CSS Transitions: property <--time> from [1000ms] to [11s] at (1) is [11s] 
+FAIL CSS Transitions: property <--time> from [1000ms] to [11s] at (1.5) is [11s] assert_equals: expected "16s " but got "11s "
+PASS CSS Animations: property <--time> from neutral to [20s] at (-0.3) is [7s] 
+PASS CSS Animations: property <--time> from neutral to [20s] at (0) is [10s] 
+PASS CSS Animations: property <--time> from neutral to [20s] at (0.5) is [15s] 
+PASS CSS Animations: property <--time> from neutral to [20s] at (1) is [20s] 
+PASS CSS Animations: property <--time> from neutral to [20s] at (1.5) is [25s] 
+PASS CSS Animations: property <--time> from [initial] to [20s] at (-0.3) is [46s] 
+PASS CSS Animations: property <--time> from [initial] to [20s] at (0) is [40s] 
+PASS CSS Animations: property <--time> from [initial] to [20s] at (0.5) is [30s] 
+PASS CSS Animations: property <--time> from [initial] to [20s] at (1) is [20s] 
+PASS CSS Animations: property <--time> from [initial] to [20s] at (1.5) is [10s] 
+PASS CSS Animations: property <--time> from [inherit] to [20s] at (-0.3) is [33s] 
+PASS CSS Animations: property <--time> from [inherit] to [20s] at (0) is [30s] 
+PASS CSS Animations: property <--time> from [inherit] to [20s] at (0.5) is [25s] 
+PASS CSS Animations: property <--time> from [inherit] to [20s] at (1) is [20s] 
+PASS CSS Animations: property <--time> from [inherit] to [20s] at (1.5) is [15s] 
+PASS CSS Animations: property <--time> from [unset] to [20s] at (-0.3) is [46s] 
+PASS CSS Animations: property <--time> from [unset] to [20s] at (0) is [40s] 
+PASS CSS Animations: property <--time> from [unset] to [20s] at (0.5) is [30s] 
+PASS CSS Animations: property <--time> from [unset] to [20s] at (1) is [20s] 
+PASS CSS Animations: property <--time> from [unset] to [20s] at (1.5) is [10s] 
+PASS CSS Animations: property <--time> from [-10s] to [10s] at (-0.3) is [-16s] 
+PASS CSS Animations: property <--time> from [-10s] to [10s] at (0) is [-10s] 
+PASS CSS Animations: property <--time> from [-10s] to [10s] at (0.5) is [0s] 
+PASS CSS Animations: property <--time> from [-10s] to [10s] at (1) is [10s] 
+PASS CSS Animations: property <--time> from [-10s] to [10s] at (1.5) is [20s] 
+PASS CSS Animations: property <--time> from [100ms] to [200ms] at (-0.3) is [0.07s] 
+PASS CSS Animations: property <--time> from [100ms] to [200ms] at (0) is [0.1s] 
+PASS CSS Animations: property <--time> from [100ms] to [200ms] at (0.5) is [0.15s] 
+PASS CSS Animations: property <--time> from [100ms] to [200ms] at (1) is [0.2s] 
+PASS CSS Animations: property <--time> from [100ms] to [200ms] at (1.5) is [0.25s] 
+PASS CSS Animations: property <--time> from [1000ms] to [11s] at (-0.3) is [-2s] 
+PASS CSS Animations: property <--time> from [1000ms] to [11s] at (0) is [1s] 
+PASS CSS Animations: property <--time> from [1000ms] to [11s] at (0.5) is [6s] 
+PASS CSS Animations: property <--time> from [1000ms] to [11s] at (1) is [11s] 
+PASS CSS Animations: property <--time> from [1000ms] to [11s] at (1.5) is [16s] 
+PASS Web Animations: property <--time> from neutral to [20s] at (-0.3) is [7s] 
+PASS Web Animations: property <--time> from neutral to [20s] at (0) is [10s] 
+PASS Web Animations: property <--time> from neutral to [20s] at (0.5) is [15s] 
+PASS Web Animations: property <--time> from neutral to [20s] at (1) is [20s] 
+PASS Web Animations: property <--time> from neutral to [20s] at (1.5) is [25s] 
+PASS Web Animations: property <--time> from [initial] to [20s] at (-0.3) is [46s] 
+PASS Web Animations: property <--time> from [initial] to [20s] at (0) is [40s] 
+PASS Web Animations: property <--time> from [initial] to [20s] at (0.5) is [30s] 
+PASS Web Animations: property <--time> from [initial] to [20s] at (1) is [20s] 
+PASS Web Animations: property <--time> from [initial] to [20s] at (1.5) is [10s] 
+PASS Web Animations: property <--time> from [inherit] to [20s] at (-0.3) is [33s] 
+PASS Web Animations: property <--time> from [inherit] to [20s] at (0) is [30s] 
+PASS Web Animations: property <--time> from [inherit] to [20s] at (0.5) is [25s] 
+PASS Web Animations: property <--time> from [inherit] to [20s] at (1) is [20s] 
+PASS Web Animations: property <--time> from [inherit] to [20s] at (1.5) is [15s] 
+PASS Web Animations: property <--time> from [unset] to [20s] at (-0.3) is [46s] 
+PASS Web Animations: property <--time> from [unset] to [20s] at (0) is [40s] 
+PASS Web Animations: property <--time> from [unset] to [20s] at (0.5) is [30s] 
+PASS Web Animations: property <--time> from [unset] to [20s] at (1) is [20s] 
+PASS Web Animations: property <--time> from [unset] to [20s] at (1.5) is [10s] 
+PASS Web Animations: property <--time> from [-10s] to [10s] at (-0.3) is [-16s] 
+PASS Web Animations: property <--time> from [-10s] to [10s] at (0) is [-10s] 
+PASS Web Animations: property <--time> from [-10s] to [10s] at (0.5) is [0s] 
+PASS Web Animations: property <--time> from [-10s] to [10s] at (1) is [10s] 
+PASS Web Animations: property <--time> from [-10s] to [10s] at (1.5) is [20s] 
+PASS Web Animations: property <--time> from [100ms] to [200ms] at (-0.3) is [0.07s] 
+PASS Web Animations: property <--time> from [100ms] to [200ms] at (0) is [0.1s] 
+PASS Web Animations: property <--time> from [100ms] to [200ms] at (0.5) is [0.15s] 
+PASS Web Animations: property <--time> from [100ms] to [200ms] at (1) is [0.2s] 
+PASS Web Animations: property <--time> from [100ms] to [200ms] at (1.5) is [0.25s] 
+PASS Web Animations: property <--time> from [1000ms] to [11s] at (-0.3) is [-2s] 
+PASS Web Animations: property <--time> from [1000ms] to [11s] at (0) is [1s] 
+PASS Web Animations: property <--time> from [1000ms] to [11s] at (0.5) is [6s] 
+PASS Web Animations: property <--time> from [1000ms] to [11s] at (1) is [11s] 
+PASS Web Animations: property <--time> from [1000ms] to [11s] at (1.5) is [16s] 
+Harness: the test ran to completion.
+
diff --git a/third_party/WebKit/LayoutTests/animations/custom-properties/time-type-interpolation.html b/third_party/WebKit/LayoutTests/animations/custom-properties/time-type-interpolation.html
new file mode 100644
index 0000000..953848c
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/animations/custom-properties/time-type-interpolation.html
@@ -0,0 +1,104 @@
+<!DOCTYPE html>
+<meta charset="UTF-8">
+<style>
+.parent {
+  --time: 30s;
+}
+.target {
+  --time: 10s;
+}
+</style>
+<body>
+<script src="../interpolation/resources/interpolation-test.js"></script>
+<script>
+CSS.registerProperty({
+  name: '--time',
+  syntax: '<time>',
+  initialValue: '40s',
+});
+
+assertInterpolation({
+  property: '--time',
+  from: neutralKeyframe,
+  to: '20s',
+}, [
+  {at: -0.3, is: '7s'},
+  {at: 0, is: '10s'},
+  {at: 0.5, is: '15s'},
+  {at: 1, is: '20s'},
+  {at: 1.5, is: '25s'},
+]);
+
+assertInterpolation({
+  property: '--time',
+  from: 'initial',
+  to: '20s',
+}, [
+  {at: -0.3, is: '46s'},
+  {at: 0, is: '40s'},
+  {at: 0.5, is: '30s'},
+  {at: 1, is: '20s'},
+  {at: 1.5, is: '10s'},
+]);
+
+assertInterpolation({
+  property: '--time',
+  from: 'inherit',
+  to: '20s',
+}, [
+  {at: -0.3, is: '33s'},
+  {at: 0, is: '30s'},
+  {at: 0.5, is: '25s'},
+  {at: 1, is: '20s'},
+  {at: 1.5, is: '15s'},
+]);
+
+assertInterpolation({
+  property: '--time',
+  from: 'unset',
+  to: '20s',
+}, [
+  {at: -0.3, is: '46s'},
+  {at: 0, is: '40s'},
+  {at: 0.5, is: '30s'},
+  {at: 1, is: '20s'},
+  {at: 1.5, is: '10s'},
+]);
+
+assertInterpolation({
+  property: '--time',
+  from: '-10s',
+  to: '10s',
+}, [
+  {at: -0.3, is: '-16s'},
+  {at: 0, is: '-10s'},
+  {at: 0.5, is: '0s'},
+  {at: 1, is: '10s'},
+  {at: 1.5, is: '20s'},
+]);
+
+assertInterpolation({
+  property: '--time',
+  from: '100ms',
+  to: '200ms',
+}, [
+  {at: -0.3, is: '0.07s'},
+  {at: 0, is: '0.1s'},
+  {at: 0.5, is: '0.15s'},
+  {at: 1, is: '0.2s'},
+  {at: 1.5, is: '0.25s'},
+]);
+
+assertInterpolation({
+  property: '--time',
+  from: '1000ms',
+  to: '11s',
+}, [
+  {at: -0.3, is: '-2s'},
+  {at: 0, is: '1s'},
+  {at: 0.5, is: '6s'},
+  {at: 1, is: '11s'},
+  {at: 1.5, is: '16s'},
+]);
+</script>
+</body>
diff --git a/third_party/WebKit/LayoutTests/animations/interpolation/border-image-width-interpolation-expected.txt b/third_party/WebKit/LayoutTests/animations/interpolation/border-image-width-interpolation-expected.txt
index 76cb5e6..e3dc0aa4 100644
--- a/third_party/WebKit/LayoutTests/animations/interpolation/border-image-width-interpolation-expected.txt
+++ b/third_party/WebKit/LayoutTests/animations/interpolation/border-image-width-interpolation-expected.txt
@@ -189,12 +189,12 @@
 FAIL CSS Animations: property <border-image-width> from [10px] to [20%] at (0.6) is [calc(4px + 12%)] assert_equals: expected "16px " but got "calc ( 4px + 12 % ) "
 PASS CSS Animations: property <border-image-width> from [10px] to [20%] at (1) is [20%] 
 FAIL CSS Animations: property <border-image-width> from [10px] to [20%] at (1.5) is [calc(-5px + 30%)] assert_equals: expected "25px " but got "calc ( - 5px + 30 % ) "
-FAIL CSS Animations: property <border-image-width> from [10px auto auto 20] to [110px auto auto 120] at (-0.3) is [10px auto auto 20] assert_equals: expected "0px auto auto 0 " but got "10px auto auto 20 "
+PASS CSS Animations: property <border-image-width> from [10px auto auto 20] to [110px auto auto 120] at (-0.3) is [0px auto auto 0] 
 PASS CSS Animations: property <border-image-width> from [10px auto auto 20] to [110px auto auto 120] at (0) is [10px auto auto 20] 
-FAIL CSS Animations: property <border-image-width> from [10px auto auto 20] to [110px auto auto 120] at (0.3) is [10px auto auto 20] assert_equals: expected "40px auto auto 50 " but got "10px auto auto 20 "
-FAIL CSS Animations: property <border-image-width> from [10px auto auto 20] to [110px auto auto 120] at (0.6) is [110px auto auto 120] assert_equals: expected "70px auto auto 80 " but got "110px auto auto 120 "
+PASS CSS Animations: property <border-image-width> from [10px auto auto 20] to [110px auto auto 120] at (0.3) is [40px auto auto 50] 
+PASS CSS Animations: property <border-image-width> from [10px auto auto 20] to [110px auto auto 120] at (0.6) is [70px auto auto 80] 
 PASS CSS Animations: property <border-image-width> from [10px auto auto 20] to [110px auto auto 120] at (1) is [110px auto auto 120] 
-FAIL CSS Animations: property <border-image-width> from [10px auto auto 20] to [110px auto auto 120] at (1.5) is [110px auto auto 120] assert_equals: expected "160px auto auto 170 " but got "110px auto auto 120 "
+PASS CSS Animations: property <border-image-width> from [10px auto auto 20] to [110px auto auto 120] at (1.5) is [160px auto auto 170] 
 PASS CSS Animations: property <border-image-width> from [10px auto auto 20] to [110px auto 120 auto] at (-0.3) is [10px auto auto 20] 
 PASS CSS Animations: property <border-image-width> from [10px auto auto 20] to [110px auto 120 auto] at (0) is [10px auto auto 20] 
 PASS CSS Animations: property <border-image-width> from [10px auto auto 20] to [110px auto 120 auto] at (0.3) is [10px auto auto 20] 
@@ -304,12 +304,12 @@
 FAIL Web Animations: property <border-image-width> from [10px] to [20%] at (0.6) is [calc(4px + 12%)] assert_equals: expected "16px " but got "calc ( 4px + 12 % ) "
 PASS Web Animations: property <border-image-width> from [10px] to [20%] at (1) is [20%] 
 FAIL Web Animations: property <border-image-width> from [10px] to [20%] at (1.5) is [calc(-5px + 30%)] assert_equals: expected "25px " but got "calc ( - 5px + 30 % ) "
-FAIL Web Animations: property <border-image-width> from [10px auto auto 20] to [110px auto auto 120] at (-0.3) is [10px auto auto 20] assert_equals: expected "0px auto auto 0 " but got "10px auto auto 20 "
+PASS Web Animations: property <border-image-width> from [10px auto auto 20] to [110px auto auto 120] at (-0.3) is [0px auto auto 0] 
 PASS Web Animations: property <border-image-width> from [10px auto auto 20] to [110px auto auto 120] at (0) is [10px auto auto 20] 
-FAIL Web Animations: property <border-image-width> from [10px auto auto 20] to [110px auto auto 120] at (0.3) is [10px auto auto 20] assert_equals: expected "40px auto auto 50 " but got "10px auto auto 20 "
-FAIL Web Animations: property <border-image-width> from [10px auto auto 20] to [110px auto auto 120] at (0.6) is [110px auto auto 120] assert_equals: expected "70px auto auto 80 " but got "110px auto auto 120 "
+PASS Web Animations: property <border-image-width> from [10px auto auto 20] to [110px auto auto 120] at (0.3) is [40px auto auto 50] 
+PASS Web Animations: property <border-image-width> from [10px auto auto 20] to [110px auto auto 120] at (0.6) is [70px auto auto 80] 
 PASS Web Animations: property <border-image-width> from [10px auto auto 20] to [110px auto auto 120] at (1) is [110px auto auto 120] 
-FAIL Web Animations: property <border-image-width> from [10px auto auto 20] to [110px auto auto 120] at (1.5) is [110px auto auto 120] assert_equals: expected "160px auto auto 170 " but got "110px auto auto 120 "
+PASS Web Animations: property <border-image-width> from [10px auto auto 20] to [110px auto auto 120] at (1.5) is [160px auto auto 170] 
 PASS Web Animations: property <border-image-width> from [10px auto auto 20] to [110px auto 120 auto] at (-0.3) is [10px auto auto 20] 
 PASS Web Animations: property <border-image-width> from [10px auto auto 20] to [110px auto 120 auto] at (0) is [10px auto auto 20] 
 PASS Web Animations: property <border-image-width> from [10px auto auto 20] to [110px auto 120 auto] at (0.3) is [10px auto auto 20] 
diff --git a/third_party/WebKit/LayoutTests/animations/interpolation/visibility-interpolation.html b/third_party/WebKit/LayoutTests/animations/interpolation/visibility-interpolation.html
index b5ff785..7d366179 100644
--- a/third_party/WebKit/LayoutTests/animations/interpolation/visibility-interpolation.html
+++ b/third_party/WebKit/LayoutTests/animations/interpolation/visibility-interpolation.html
@@ -29,6 +29,19 @@
 
 assertInterpolation({
   property: 'visibility',
+  from: 'hidden',
+  to: 'visible'
+}, [
+  {at: -1, is: 'hidden'},
+  {at: 0, is: 'hidden'},
+  {at: 0.1, is: 'visible'},
+  {at: 0.9, is: 'visible'},
+  {at: 1, is: 'visible'},
+  {at: 1.5, is: 'visible'},
+]);
+
+assertInterpolation({
+  property: 'visibility',
   from: 'collapse',
   to: 'visible'
 }, [
diff --git a/third_party/WebKit/LayoutTests/compositing/overflow/overflow-positioning.html b/third_party/WebKit/LayoutTests/compositing/overflow/overflow-positioning.html
index d0a18743..1af9aa7 100644
--- a/third_party/WebKit/LayoutTests/compositing/overflow/overflow-positioning.html
+++ b/third_party/WebKit/LayoutTests/compositing/overflow/overflow-positioning.html
@@ -54,18 +54,23 @@
     if (window.testRunner)
       testRunner.waitUntilDone();
 
+    function waitForCompositor() {
+      return document.body.animate({opacity: [1, 1]}, 1).finished;
+    }
+
     function startTest()
     {
-      window.setTimeout(function() {
-        var mover = document.getElementById('mover');
-        mover.className = 'moving';
-        
-        window.setTimeout(function() {
-          if (window.testRunner)
-            testRunner.notifyDone();
-        }, 0);
-        
-      }, 0);
+      var mover = document.getElementById('mover');
+      getComputedStyle(mover).transform; // Force style recalc
+      mover.className = 'moving';
+      if (window.internals)
+        internals.pauseAnimations(0);
+
+      waitForCompositor().then(() => {
+        if (window.testRunner) {
+          testRunner.notifyDone();
+        }
+      });
     }
 
     window.addEventListener('load', startTest, false);
diff --git a/third_party/WebKit/LayoutTests/editing/pasteboard/resources/select-and-drag.js b/third_party/WebKit/LayoutTests/editing/pasteboard/resources/select-and-drag.js
deleted file mode 100644
index cb870c8c..0000000
--- a/third_party/WebKit/LayoutTests/editing/pasteboard/resources/select-and-drag.js
+++ /dev/null
@@ -1,28 +0,0 @@
-function selectListItems(startSelectionElement, endSelectionElement, endSelectionElementOffset) {
-
-    var start = document.getElementById(startSelectionElement);
-    var end = document.getElementById(endSelectionElement);
-
-    var selection = window.getSelection();
-    selection.setBaseAndExtent(start, 0, end, endSelectionElementOffset);
-}
-
-function dragSelectionToTarget(startSelectionElement, targetElement) {
-
-    var start = document.getElementById(startSelectionElement);
-    var startx = start.offsetLeft;
-    var starty = start.offsetTop + start.offsetHeight / 2;
-
-    eventSender.mouseMoveTo(startx, starty);
-    eventSender.mouseDown();
-    eventSender.leapForward(200);
-
-    var target = document.getElementById(targetElement);
-    var targetx = target.parentNode.offsetLeft + target.offsetLeft + target.offsetWidth / 2;
-    var targety = target.offsetTop + target.offsetHeight / 2;
-
-    eventSender.mouseMoveTo(targetx, targety);
-    eventSender.mouseUp();
-
-    window.getSelection().removeAllRanges();
-}
diff --git a/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-00-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-00-expected.txt
index fc6edf4..369a175 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-00-expected.txt
+++ b/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-00-expected.txt
@@ -1,102 +1,102 @@
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE WARNING: line 7: The behavior that Selection.addRange() merges existing Range and the specified Range is deprecated and will be removed in M58, around April 2017. See https://www.chromestatus.com/features/6680566019653632 for more details.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE WARNING: line 24: The behavior that Selection.addRange() merges existing Range and the specified Range is deprecated and will be removed in M58, around April 2017. See https://www.chromestatus.com/features/6680566019653632 for more details.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
 This is a testharness.js-based test.
-Found 2784 tests; 1904 PASS, 880 FAIL, 0 TIMEOUT, 0 NOTRUN.
+Found 2184 tests; 1784 PASS, 400 FAIL, 0 TIMEOUT, 0 NOTRUN.
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -208,78 +208,42 @@
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must do nothing 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "O" but got object ""
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must do nothing 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "qrstuv" but got object ""
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must do nothing 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must do nothing 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "E" but got object ""
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must do nothing 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "ghijkl" but got object ""
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must do nothing 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -414,39 +378,21 @@
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title></title></head><body><p>Efghijkl</p><p... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must do nothing 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <head><title></title></head> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must do nothing 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <body><p>Efghijkl</p><p>Mnopqrst</p>I admit that I harbor... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must do nothing 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in rangeCount being 1 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -483,26 +429,14 @@
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <p>Opqrstuv</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must do nothing 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <p>Opqrstuv</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Opqrstuv" but got object ""
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must do nothing 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -614,13 +548,7 @@
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title></title></head><body><p>Efghijkl</p><p... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must do nothing 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 34 [document, 0, document, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 34 [document, 0, document, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -767,234 +695,126 @@
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 3 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must do nothing 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in rangeCount being 1 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the first added range must modify the Selection's last Range 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in rangeCount being 1 
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 3 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "EfghijklMnopqrstI admit that I harbor doubts about whether we really need so many things to test, but it's too late to stop now." but got object ""
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must do nothing 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in rangeCount being 1 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the first added range must modify the Selection's last Range 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in rangeCount being 1 
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <body><p>Efghijkl</p><p>Mnopqrst</p>I admit that I harbor... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "EfghijklMnopqrstI admit that I harbor doubts about w" but got object ""
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must do nothing 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 4 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must do nothing 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 4 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "do re mi fa so la ti" but got object ""
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must do nothing 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Uvwxyzab" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Uvwxyzab" but got object ""
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must do nothing 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in rangeCount being 1 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the first added range must modify the Selection's last Range 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in rangeCount being 1 
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Cdefghij" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must do nothing 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Cdefghij" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Cdefghij" but got object ""
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must do nothing 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in rangeCount being 1 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the first added range must modify the Selection's last Range 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in rangeCount being 1 
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Klmnopqr" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must do nothing 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Klmnopqr" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Klmnopqr" but got object ""
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must do nothing 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in rangeCount being 1 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the first added range must modify the Selection's last Range 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in rangeCount being 1 
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--Stuvwxyz--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must do nothing 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in rangeCount being 1 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the first added range must modify the Selection's last Range 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in rangeCount being 1 
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--Stuvwxyz--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must do nothing 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--אריה יהודה--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must do nothing 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in rangeCount being 1 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the first added range must modify the Selection's last Range 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in rangeCount being 1 
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--אריה יהודה--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must do nothing 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in rangeCount being 1 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the first added range must modify the Selection's last Range 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in rangeCount being 1 
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--בן חיים אליעזר--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must do nothing 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must do nothing 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must do nothing 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must do nothing 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -1106,78 +926,42 @@
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must do nothing 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "O" but got object ""
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must do nothing 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "qrstuv" but got object ""
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must do nothing 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must do nothing 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "E" but got object ""
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must do nothing 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "ghijkl" but got object ""
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must do nothing 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -1312,39 +1096,21 @@
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title></title></head><body><p>Efghijkl</p><p... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must do nothing 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <head><title></title></head> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must do nothing 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <body><p>Efghijkl</p><p>Mnopqrst</p>I admit that I harbor... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must do nothing 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in rangeCount being 1 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -1381,26 +1147,14 @@
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <p>Opqrstuv</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must do nothing 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <p>Opqrstuv</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Opqrstuv" but got object ""
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must do nothing 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -1512,13 +1266,7 @@
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title></title></head><body><p>Efghijkl</p><p... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must do nothing 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 34 [document, 0, document, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 34 [document, 0, document, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -1665,234 +1413,126 @@
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 3 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must do nothing 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in rangeCount being 1 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the first added range must modify the Selection's last Range 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in rangeCount being 1 
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 3 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "EfghijklMnopqrstI admit that I harbor doubts about whether we really need so many things to test, but it's too late to stop now." but got object ""
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must do nothing 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in rangeCount being 1 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the first added range must modify the Selection's last Range 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in rangeCount being 1 
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <body><p>Efghijkl</p><p>Mnopqrst</p>I admit that I harbor... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "EfghijklMnopqrstI admit that I harbor doubts about w" but got object ""
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must do nothing 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 4 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must do nothing 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 4 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "do re mi fa so la ti" but got object ""
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must do nothing 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Uvwxyzab" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Uvwxyzab" but got object ""
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must do nothing 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in rangeCount being 1 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the first added range must modify the Selection's last Range 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in rangeCount being 1 
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Cdefghij" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must do nothing 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Cdefghij" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Cdefghij" but got object ""
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must do nothing 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in rangeCount being 1 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the first added range must modify the Selection's last Range 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in rangeCount being 1 
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Klmnopqr" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must do nothing 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Klmnopqr" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Klmnopqr" but got object ""
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must do nothing 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in rangeCount being 1 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the first added range must modify the Selection's last Range 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in rangeCount being 1 
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--Stuvwxyz--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must do nothing 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in rangeCount being 1 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the first added range must modify the Selection's last Range 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in rangeCount being 1 
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--Stuvwxyz--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must do nothing 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--אריה יהודה--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must do nothing 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in rangeCount being 1 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the first added range must modify the Selection's last Range 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in rangeCount being 1 
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--אריה יהודה--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must do nothing 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in rangeCount being 1 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the first added range must modify the Selection's last Range 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in rangeCount being 1 
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--בן חיים אליעזר--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must do nothing 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must do nothing 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must do nothing 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must do nothing 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -2004,78 +1644,42 @@
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must do nothing 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "O" but got object ""
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must do nothing 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "qrstuv" but got object ""
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must do nothing 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must do nothing 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "E" but got object ""
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must do nothing 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "ghijkl" but got object ""
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must do nothing 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -2210,39 +1814,21 @@
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title></title></head><body><p>Efghijkl</p><p... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must do nothing 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <head><title></title></head> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must do nothing 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <body><p>Efghijkl</p><p>Mnopqrst</p>I admit that I harbor... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must do nothing 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in rangeCount being 1 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -2279,26 +1865,14 @@
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <p>Opqrstuv</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must do nothing 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <p>Opqrstuv</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Opqrstuv" but got object ""
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must do nothing 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -2410,13 +1984,7 @@
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title></title></head><body><p>Efghijkl</p><p... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must do nothing 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 34 [document, 0, document, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 34 [document, 0, document, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -2563,234 +2131,126 @@
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 3 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must do nothing 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in rangeCount being 1 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the first added range must modify the Selection's last Range 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in rangeCount being 1 
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 3 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "EfghijklMnopqrstI admit that I harbor doubts about whether we really need so many things to test, but it's too late to stop now." but got object ""
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must do nothing 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in rangeCount being 1 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the first added range must modify the Selection's last Range 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in rangeCount being 1 
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <body><p>Efghijkl</p><p>Mnopqrst</p>I admit that I harbor... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "EfghijklMnopqrstI admit that I harbor doubts about w" but got object ""
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must do nothing 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 4 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must do nothing 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 4 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "do re mi fa so la ti" but got object ""
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must do nothing 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Uvwxyzab" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Uvwxyzab" but got object ""
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must do nothing 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in rangeCount being 1 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the first added range must modify the Selection's last Range 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in rangeCount being 1 
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Cdefghij" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must do nothing 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Cdefghij" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Cdefghij" but got object ""
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must do nothing 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in rangeCount being 1 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the first added range must modify the Selection's last Range 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in rangeCount being 1 
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Klmnopqr" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must do nothing 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Klmnopqr" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Klmnopqr" but got object ""
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must do nothing 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in rangeCount being 1 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the first added range must modify the Selection's last Range 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in rangeCount being 1 
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--Stuvwxyz--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must do nothing 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in rangeCount being 1 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the first added range must modify the Selection's last Range 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in rangeCount being 1 
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--Stuvwxyz--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must do nothing 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--אריה יהודה--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must do nothing 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in rangeCount being 1 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the first added range must modify the Selection's last Range 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in rangeCount being 1 
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--אריה יהודה--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must do nothing 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in rangeCount being 1 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the first added range must modify the Selection's last Range 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in rangeCount being 1 
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--בן חיים אליעזר--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must do nothing 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must do nothing 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must do nothing 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must do nothing 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -2902,78 +2362,42 @@
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must do nothing 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "O" but got object ""
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must do nothing 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "qrstuv" but got object ""
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must do nothing 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must do nothing 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "E" but got object ""
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must do nothing 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "ghijkl" but got object ""
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must do nothing 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -3108,39 +2532,21 @@
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title></title></head><body><p>Efghijkl</p><p... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must do nothing 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <head><title></title></head> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must do nothing 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <body><p>Efghijkl</p><p>Mnopqrst</p>I admit that I harbor... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must do nothing 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in rangeCount being 1 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -3177,26 +2583,14 @@
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <p>Opqrstuv</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must do nothing 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <p>Opqrstuv</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Opqrstuv" but got object ""
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must do nothing 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -3308,13 +2702,7 @@
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title></title></head><body><p>Efghijkl</p><p... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must do nothing 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 34 [document, 0, document, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 34 [document, 0, document, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -3461,233 +2849,125 @@
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 3 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must do nothing 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in rangeCount being 1 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the first added range must modify the Selection's last Range 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in rangeCount being 1 
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 3 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "EfghijklMnopqrstI admit that I harbor doubts about whether we really need so many things to test, but it's too late to stop now." but got object ""
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must do nothing 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in rangeCount being 1 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the first added range must modify the Selection's last Range 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in rangeCount being 1 
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <body><p>Efghijkl</p><p>Mnopqrst</p>I admit that I harbor... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "EfghijklMnopqrstI admit that I harbor doubts about w" but got object ""
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must do nothing 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 4 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must do nothing 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 4 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "do re mi fa so la ti" but got object ""
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must do nothing 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Uvwxyzab" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Uvwxyzab" but got object ""
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must do nothing 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in rangeCount being 1 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the first added range must modify the Selection's last Range 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in rangeCount being 1 
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Cdefghij" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must do nothing 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Cdefghij" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Cdefghij" but got object ""
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must do nothing 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in rangeCount being 1 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the first added range must modify the Selection's last Range 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in rangeCount being 1 
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Klmnopqr" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must do nothing 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Klmnopqr" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Klmnopqr" but got object ""
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must do nothing 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in rangeCount being 1 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the first added range must modify the Selection's last Range 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in rangeCount being 1 
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--Stuvwxyz--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must do nothing 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in rangeCount being 1 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the first added range must modify the Selection's last Range 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in rangeCount being 1 
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--Stuvwxyz--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must do nothing 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--אריה יהודה--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must do nothing 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in rangeCount being 1 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the first added range must modify the Selection's last Range 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in rangeCount being 1 
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--אריה יהודה--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must do nothing 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in rangeCount being 1 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the first added range must modify the Selection's last Range 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in rangeCount being 1 
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--בן חיים אליעזר--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must do nothing 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must do nothing 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must do nothing 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must do nothing 
 Harness: the test ran to completion.
 
diff --git a/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-04-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-04-expected.txt
index 6eb91a90..e684dd98 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-04-expected.txt
+++ b/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-04-expected.txt
@@ -1,102 +1,102 @@
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE WARNING: line 7: The behavior that Selection.addRange() merges existing Range and the specified Range is deprecated and will be removed in M58, around April 2017. See https://www.chromestatus.com/features/6680566019653632 for more details.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE WARNING: line 24: The behavior that Selection.addRange() merges existing Range and the specified Range is deprecated and will be removed in M58, around April 2017. See https://www.chromestatus.com/features/6680566019653632 for more details.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
 This is a testharness.js-based test.
-Found 2784 tests; 1904 PASS, 880 FAIL, 0 TIMEOUT, 0 NOTRUN.
+Found 2184 tests; 1784 PASS, 400 FAIL, 0 TIMEOUT, 0 NOTRUN.
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -208,78 +208,42 @@
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must do nothing 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "O" but got object ""
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must do nothing 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "qrstuv" but got object ""
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must do nothing 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must do nothing 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "E" but got object ""
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must do nothing 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "ghijkl" but got object ""
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must do nothing 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -414,39 +378,21 @@
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title></title></head><body><p>Efghijkl</p><p... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must do nothing 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <head><title></title></head> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must do nothing 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <body><p>Efghijkl</p><p>Mnopqrst</p>I admit that I harbor... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must do nothing 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in rangeCount being 1 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -483,26 +429,14 @@
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <p>Opqrstuv</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must do nothing 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <p>Opqrstuv</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Opqrstuv" but got object ""
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must do nothing 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -614,13 +548,7 @@
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title></title></head><body><p>Efghijkl</p><p... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must do nothing 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 34 [document, 0, document, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 34 [document, 0, document, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -767,234 +695,126 @@
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 3 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must do nothing 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in rangeCount being 1 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the first added range must modify the Selection's last Range 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in rangeCount being 1 
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 3 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "EfghijklMnopqrstI admit that I harbor doubts about whether we really need so many things to test, but it's too late to stop now." but got object ""
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must do nothing 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in rangeCount being 1 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the first added range must modify the Selection's last Range 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in rangeCount being 1 
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <body><p>Efghijkl</p><p>Mnopqrst</p>I admit that I harbor... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "EfghijklMnopqrstI admit that I harbor doubts about w" but got object ""
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must do nothing 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 4 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must do nothing 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 4 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "do re mi fa so la ti" but got object ""
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must do nothing 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Uvwxyzab" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Uvwxyzab" but got object ""
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must do nothing 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in rangeCount being 1 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the first added range must modify the Selection's last Range 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in rangeCount being 1 
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Cdefghij" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must do nothing 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Cdefghij" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Cdefghij" but got object ""
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must do nothing 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in rangeCount being 1 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the first added range must modify the Selection's last Range 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in rangeCount being 1 
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Klmnopqr" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must do nothing 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Klmnopqr" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Klmnopqr" but got object ""
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must do nothing 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in rangeCount being 1 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the first added range must modify the Selection's last Range 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in rangeCount being 1 
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--Stuvwxyz--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must do nothing 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in rangeCount being 1 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the first added range must modify the Selection's last Range 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in rangeCount being 1 
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--Stuvwxyz--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must do nothing 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--אריה יהודה--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must do nothing 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in rangeCount being 1 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the first added range must modify the Selection's last Range 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in rangeCount being 1 
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--אריה יהודה--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must do nothing 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in rangeCount being 1 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the first added range must modify the Selection's last Range 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in rangeCount being 1 
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--בן חיים אליעזר--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must do nothing 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must do nothing 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must do nothing 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must do nothing 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -1106,78 +926,42 @@
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must do nothing 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "O" but got object ""
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must do nothing 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "qrstuv" but got object ""
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must do nothing 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must do nothing 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "E" but got object ""
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must do nothing 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "ghijkl" but got object ""
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must do nothing 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -1312,39 +1096,21 @@
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title></title></head><body><p>Efghijkl</p><p... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must do nothing 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <head><title></title></head> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must do nothing 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <body><p>Efghijkl</p><p>Mnopqrst</p>I admit that I harbor... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must do nothing 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in rangeCount being 1 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -1381,26 +1147,14 @@
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <p>Opqrstuv</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must do nothing 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <p>Opqrstuv</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Opqrstuv" but got object ""
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must do nothing 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -1512,13 +1266,7 @@
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title></title></head><body><p>Efghijkl</p><p... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must do nothing 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 34 [document, 0, document, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 34 [document, 0, document, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -1665,234 +1413,126 @@
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 3 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must do nothing 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in rangeCount being 1 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the first added range must modify the Selection's last Range 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in rangeCount being 1 
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 3 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "EfghijklMnopqrstI admit that I harbor doubts about whether we really need so many things to test, but it's too late to stop now." but got object ""
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must do nothing 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in rangeCount being 1 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the first added range must modify the Selection's last Range 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in rangeCount being 1 
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <body><p>Efghijkl</p><p>Mnopqrst</p>I admit that I harbor... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "EfghijklMnopqrstI admit that I harbor doubts about w" but got object ""
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must do nothing 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 4 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must do nothing 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 4 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "do re mi fa so la ti" but got object ""
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must do nothing 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Uvwxyzab" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Uvwxyzab" but got object ""
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must do nothing 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in rangeCount being 1 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the first added range must modify the Selection's last Range 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in rangeCount being 1 
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Cdefghij" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must do nothing 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Cdefghij" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Cdefghij" but got object ""
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must do nothing 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in rangeCount being 1 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the first added range must modify the Selection's last Range 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in rangeCount being 1 
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Klmnopqr" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must do nothing 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Klmnopqr" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Klmnopqr" but got object ""
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must do nothing 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in rangeCount being 1 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the first added range must modify the Selection's last Range 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in rangeCount being 1 
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--Stuvwxyz--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must do nothing 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in rangeCount being 1 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the first added range must modify the Selection's last Range 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in rangeCount being 1 
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--Stuvwxyz--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must do nothing 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--אריה יהודה--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must do nothing 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in rangeCount being 1 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the first added range must modify the Selection's last Range 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in rangeCount being 1 
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--אריה יהודה--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must do nothing 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in rangeCount being 1 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the first added range must modify the Selection's last Range 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in rangeCount being 1 
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--בן חיים אליעזר--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must do nothing 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must do nothing 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must do nothing 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must do nothing 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -2004,78 +1644,42 @@
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must do nothing 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "O" but got object ""
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must do nothing 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "qrstuv" but got object ""
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must do nothing 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must do nothing 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "E" but got object ""
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must do nothing 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "ghijkl" but got object ""
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must do nothing 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -2210,39 +1814,21 @@
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title></title></head><body><p>Efghijkl</p><p... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must do nothing 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <head><title></title></head> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must do nothing 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <body><p>Efghijkl</p><p>Mnopqrst</p>I admit that I harbor... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must do nothing 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in rangeCount being 1 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -2279,26 +1865,14 @@
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <p>Opqrstuv</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must do nothing 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <p>Opqrstuv</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Opqrstuv" but got object ""
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must do nothing 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -2410,13 +1984,7 @@
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title></title></head><body><p>Efghijkl</p><p... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must do nothing 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 34 [document, 0, document, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 34 [document, 0, document, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -2563,234 +2131,126 @@
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 3 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must do nothing 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in rangeCount being 1 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the first added range must modify the Selection's last Range 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in rangeCount being 1 
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 3 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "EfghijklMnopqrstI admit that I harbor doubts about whether we really need so many things to test, but it's too late to stop now." but got object ""
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must do nothing 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in rangeCount being 1 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the first added range must modify the Selection's last Range 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in rangeCount being 1 
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <body><p>Efghijkl</p><p>Mnopqrst</p>I admit that I harbor... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "EfghijklMnopqrstI admit that I harbor doubts about w" but got object ""
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must do nothing 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 4 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must do nothing 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 4 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "do re mi fa so la ti" but got object ""
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must do nothing 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Uvwxyzab" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Uvwxyzab" but got object ""
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must do nothing 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in rangeCount being 1 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the first added range must modify the Selection's last Range 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in rangeCount being 1 
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Cdefghij" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must do nothing 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Cdefghij" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Cdefghij" but got object ""
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must do nothing 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in rangeCount being 1 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the first added range must modify the Selection's last Range 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in rangeCount being 1 
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Klmnopqr" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must do nothing 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Klmnopqr" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Klmnopqr" but got object ""
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must do nothing 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in rangeCount being 1 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the first added range must modify the Selection's last Range 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in rangeCount being 1 
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--Stuvwxyz--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must do nothing 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in rangeCount being 1 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the first added range must modify the Selection's last Range 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in rangeCount being 1 
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--Stuvwxyz--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must do nothing 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--אריה יהודה--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must do nothing 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in rangeCount being 1 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the first added range must modify the Selection's last Range 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in rangeCount being 1 
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--אריה יהודה--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must do nothing 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in rangeCount being 1 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the first added range must modify the Selection's last Range 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in rangeCount being 1 
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--בן חיים אליעזר--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must do nothing 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must do nothing 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must do nothing 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must do nothing 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -2902,78 +2362,42 @@
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must do nothing 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "O" but got object ""
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must do nothing 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "qrstuv" but got object ""
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must do nothing 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must do nothing 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "E" but got object ""
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must do nothing 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "ghijkl" but got object ""
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must do nothing 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -3108,39 +2532,21 @@
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title></title></head><body><p>Efghijkl</p><p... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must do nothing 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <head><title></title></head> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must do nothing 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <body><p>Efghijkl</p><p>Mnopqrst</p>I admit that I harbor... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must do nothing 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in rangeCount being 1 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -3177,26 +2583,14 @@
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <p>Opqrstuv</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must do nothing 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <p>Opqrstuv</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Opqrstuv" but got object ""
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must do nothing 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -3308,13 +2702,7 @@
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title></title></head><body><p>Efghijkl</p><p... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must do nothing 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 34 [document, 0, document, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 34 [document, 0, document, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -3461,233 +2849,125 @@
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 3 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must do nothing 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in rangeCount being 1 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the first added range must modify the Selection's last Range 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in rangeCount being 1 
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 3 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "EfghijklMnopqrstI admit that I harbor doubts about whether we really need so many things to test, but it's too late to stop now." but got object ""
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must do nothing 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in rangeCount being 1 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the first added range must modify the Selection's last Range 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in rangeCount being 1 
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <body><p>Efghijkl</p><p>Mnopqrst</p>I admit that I harbor... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "EfghijklMnopqrstI admit that I harbor doubts about w" but got object ""
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must do nothing 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 4 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must do nothing 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 4 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "do re mi fa so la ti" but got object ""
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must do nothing 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Uvwxyzab" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Uvwxyzab" but got object ""
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must do nothing 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in rangeCount being 1 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the first added range must modify the Selection's last Range 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in rangeCount being 1 
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Cdefghij" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must do nothing 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Cdefghij" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Cdefghij" but got object ""
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must do nothing 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in rangeCount being 1 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the first added range must modify the Selection's last Range 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in rangeCount being 1 
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Klmnopqr" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must do nothing 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Klmnopqr" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Klmnopqr" but got object ""
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must do nothing 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in rangeCount being 1 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the first added range must modify the Selection's last Range 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in rangeCount being 1 
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--Stuvwxyz--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must do nothing 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in rangeCount being 1 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the first added range must modify the Selection's last Range 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in rangeCount being 1 
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--Stuvwxyz--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must do nothing 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--אריה יהודה--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must do nothing 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in rangeCount being 1 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the first added range must modify the Selection's last Range 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in rangeCount being 1 
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--אריה יהודה--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must do nothing 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in rangeCount being 1 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the first added range must modify the Selection's last Range 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in rangeCount being 1 
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--בן חיים אליעזר--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must do nothing 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must do nothing 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must do nothing 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must do nothing 
 Harness: the test ran to completion.
 
diff --git a/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-08-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-08-expected.txt
deleted file mode 100644
index 0e725de..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-08-expected.txt
+++ /dev/null
@@ -1,2998 +0,0 @@
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-This is a testharness.js-based test.
-Found 2784 tests; 1024 PASS, 1760 FAIL, 0 TIMEOUT, 0 NOTRUN.
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in rangeCount being 1 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the second added range must modify the Selection's last Range 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in rangeCount being 1 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the second added range must modify the Selection's last Range 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 17 [document.head, 1, document.head, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 17 [document.head, 1, document.head, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 17 [document.head, 1, document.head, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 17 [document.head, 1, document.head, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 18 [document.body, 0, document.body, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 18 [document.body, 0, document.body, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in rangeCount being 1 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in rangeCount being 1 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the second added range must modify the Selection's last Range 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in rangeCount being 1 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the second added range must modify the Selection's last Range 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 34 [document, 0, document, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 34 [document, 0, document, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 34 [document, 0, document, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 34 [document, 0, document, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 34 [document, 0, document, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 34 [document, 0, document, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 34 [document, 0, document, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 34 [document, 0, document, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 34 [document, 0, document, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 34 [document, 0, document, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 35 [document, 0, document, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 35 [document, 0, document, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 35 [document, 0, document, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 35 [document, 0, document, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 35 [document, 0, document, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 35 [document, 0, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 35 [document, 0, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 35 [document, 0, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 35 [document, 0, document, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 35 [document, 0, document, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 36 [document, 1, document, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 36 [document, 1, document, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 36 [document, 1, document, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 36 [document, 1, document, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 36 [document, 1, document, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 36 [document, 1, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 36 [document, 1, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 36 [document, 1, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 36 [document, 1, document, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 36 [document, 1, document, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 37 [testDiv, 0, comment, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in rangeCount being 1 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 37 [testDiv, 0, comment, 5]: modifying the second added range must modify the Selection's last Range 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 39 [paras[3], 1, comment, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 39 [paras[3], 1, comment, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 39 [paras[3], 1, comment, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 39 [paras[3], 1, comment, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in rangeCount being 1 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the second added range must modify the Selection's last Range 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in rangeCount being 1 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the second added range must modify the Selection's last Range 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 17 [document.head, 1, document.head, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 17 [document.head, 1, document.head, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 17 [document.head, 1, document.head, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 17 [document.head, 1, document.head, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 18 [document.body, 0, document.body, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 18 [document.body, 0, document.body, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in rangeCount being 1 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in rangeCount being 1 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the second added range must modify the Selection's last Range 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in rangeCount being 1 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the second added range must modify the Selection's last Range 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 34 [document, 0, document, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 34 [document, 0, document, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 34 [document, 0, document, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 34 [document, 0, document, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 34 [document, 0, document, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 34 [document, 0, document, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 34 [document, 0, document, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 34 [document, 0, document, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 34 [document, 0, document, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 34 [document, 0, document, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 35 [document, 0, document, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 35 [document, 0, document, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 35 [document, 0, document, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 35 [document, 0, document, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 35 [document, 0, document, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 35 [document, 0, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 35 [document, 0, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 35 [document, 0, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 35 [document, 0, document, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 35 [document, 0, document, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 36 [document, 1, document, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 36 [document, 1, document, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 36 [document, 1, document, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 36 [document, 1, document, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 36 [document, 1, document, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 36 [document, 1, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 36 [document, 1, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 36 [document, 1, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 36 [document, 1, document, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 36 [document, 1, document, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 37 [testDiv, 0, comment, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in rangeCount being 1 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 37 [testDiv, 0, comment, 5]: modifying the second added range must modify the Selection's last Range 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 39 [paras[3], 1, comment, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 39 [paras[3], 1, comment, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 39 [paras[3], 1, comment, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 39 [paras[3], 1, comment, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in rangeCount being 1 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the second added range must modify the Selection's last Range 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in rangeCount being 1 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the second added range must modify the Selection's last Range 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 17 [document.head, 1, document.head, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 17 [document.head, 1, document.head, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 17 [document.head, 1, document.head, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 17 [document.head, 1, document.head, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 18 [document.body, 0, document.body, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 18 [document.body, 0, document.body, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in rangeCount being 1 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in rangeCount being 1 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the second added range must modify the Selection's last Range 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in rangeCount being 1 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the second added range must modify the Selection's last Range 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 34 [document, 0, document, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 34 [document, 0, document, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 34 [document, 0, document, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 34 [document, 0, document, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 34 [document, 0, document, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 34 [document, 0, document, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 34 [document, 0, document, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 34 [document, 0, document, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 34 [document, 0, document, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 34 [document, 0, document, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 35 [document, 0, document, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 35 [document, 0, document, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 35 [document, 0, document, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 35 [document, 0, document, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 35 [document, 0, document, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 35 [document, 0, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 35 [document, 0, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 35 [document, 0, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 35 [document, 0, document, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 35 [document, 0, document, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 36 [document, 1, document, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 36 [document, 1, document, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 36 [document, 1, document, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 36 [document, 1, document, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 36 [document, 1, document, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 36 [document, 1, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 36 [document, 1, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 36 [document, 1, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 36 [document, 1, document, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 36 [document, 1, document, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 37 [testDiv, 0, comment, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in rangeCount being 1 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 37 [testDiv, 0, comment, 5]: modifying the second added range must modify the Selection's last Range 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 39 [paras[3], 1, comment, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 39 [paras[3], 1, comment, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 39 [paras[3], 1, comment, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 39 [paras[3], 1, comment, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in rangeCount being 1 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the second added range must modify the Selection's last Range 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in rangeCount being 1 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the second added range must modify the Selection's last Range 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 17 [document.head, 1, document.head, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 17 [document.head, 1, document.head, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 17 [document.head, 1, document.head, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 17 [document.head, 1, document.head, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 18 [document.body, 0, document.body, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 18 [document.body, 0, document.body, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in rangeCount being 1 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in rangeCount being 1 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the second added range must modify the Selection's last Range 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in rangeCount being 1 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the second added range must modify the Selection's last Range 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 34 [document, 0, document, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 34 [document, 0, document, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 34 [document, 0, document, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 34 [document, 0, document, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 34 [document, 0, document, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 34 [document, 0, document, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 34 [document, 0, document, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 34 [document, 0, document, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 34 [document, 0, document, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 34 [document, 0, document, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 35 [document, 0, document, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 35 [document, 0, document, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 35 [document, 0, document, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 35 [document, 0, document, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 35 [document, 0, document, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 35 [document, 0, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 35 [document, 0, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 35 [document, 0, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 35 [document, 0, document, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 35 [document, 0, document, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 36 [document, 1, document, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 36 [document, 1, document, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 36 [document, 1, document, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 36 [document, 1, document, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 36 [document, 1, document, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 36 [document, 1, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 36 [document, 1, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 36 [document, 1, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 36 [document, 1, document, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 36 [document, 1, document, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 37 [testDiv, 0, comment, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in rangeCount being 1 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 37 [testDiv, 0, comment, 5]: modifying the second added range must modify the Selection's last Range 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 39 [paras[3], 1, comment, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 39 [paras[3], 1, comment, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 39 [paras[3], 1, comment, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 39 [paras[3], 1, comment, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-12-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-12-expected.txt
index 7bdd8b1..f07fae65 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-12-expected.txt
+++ b/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-12-expected.txt
@@ -1,1464 +1,170 @@
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE WARNING: line 7: The behavior that Selection.addRange() merges existing Range and the specified Range is deprecated and will be removed in M58, around April 2017. See https://www.chromestatus.com/features/6680566019653632 for more details.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE WARNING: line 24: The behavior that Selection.addRange() merges existing Range and the specified Range is deprecated and will be removed in M58, around April 2017. See https://www.chromestatus.com/features/6680566019653632 for more details.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
 This is a testharness.js-based test.
-Found 2784 tests; 1464 PASS, 1320 FAIL, 0 TIMEOUT, 0 NOTRUN.
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in rangeCount being 1 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the second added range must modify the Selection's last Range 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in rangeCount being 1 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the second added range must modify the Selection's last Range 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 17 [document.head, 1, document.head, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 17 [document.head, 1, document.head, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 17 [document.head, 1, document.head, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 17 [document.head, 1, document.head, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 18 [document.body, 0, document.body, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 18 [document.body, 0, document.body, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in rangeCount being 1 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in rangeCount being 1 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the second added range must modify the Selection's last Range 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in rangeCount being 1 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the second added range must modify the Selection's last Range 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 34 [document, 0, document, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 34 [document, 0, document, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 34 [document, 0, document, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 34 [document, 0, document, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 34 [document, 0, document, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 34 [document, 0, document, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 34 [document, 0, document, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 34 [document, 0, document, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 34 [document, 0, document, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 34 [document, 0, document, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 35 [document, 0, document, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 35 [document, 0, document, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 35 [document, 0, document, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 35 [document, 0, document, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 35 [document, 0, document, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 35 [document, 0, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 35 [document, 0, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 35 [document, 0, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 35 [document, 0, document, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 35 [document, 0, document, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 36 [document, 1, document, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 36 [document, 1, document, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 36 [document, 1, document, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 36 [document, 1, document, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 36 [document, 1, document, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 36 [document, 1, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 36 [document, 1, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 36 [document, 1, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 36 [document, 1, document, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 36 [document, 1, document, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 37 [testDiv, 0, comment, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in rangeCount being 1 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 37 [testDiv, 0, comment, 5]: modifying the second added range must modify the Selection's last Range 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 39 [paras[3], 1, comment, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 39 [paras[3], 1, comment, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 39 [paras[3], 1, comment, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 39 [paras[3], 1, comment, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in rangeCount being 1 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the second added range must modify the Selection's last Range 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in rangeCount being 1 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the second added range must modify the Selection's last Range 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 17 [document.head, 1, document.head, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 17 [document.head, 1, document.head, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 17 [document.head, 1, document.head, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 17 [document.head, 1, document.head, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 18 [document.body, 0, document.body, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 18 [document.body, 0, document.body, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in rangeCount being 1 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in rangeCount being 1 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the second added range must modify the Selection's last Range 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in rangeCount being 1 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the second added range must modify the Selection's last Range 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 34 [document, 0, document, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 34 [document, 0, document, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 34 [document, 0, document, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 34 [document, 0, document, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 34 [document, 0, document, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 34 [document, 0, document, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 34 [document, 0, document, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 34 [document, 0, document, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 34 [document, 0, document, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 34 [document, 0, document, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 35 [document, 0, document, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 35 [document, 0, document, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 35 [document, 0, document, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 35 [document, 0, document, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 35 [document, 0, document, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 35 [document, 0, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 35 [document, 0, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 35 [document, 0, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 35 [document, 0, document, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 35 [document, 0, document, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 36 [document, 1, document, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 36 [document, 1, document, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 36 [document, 1, document, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 36 [document, 1, document, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 36 [document, 1, document, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 36 [document, 1, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 36 [document, 1, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 36 [document, 1, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 36 [document, 1, document, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 36 [document, 1, document, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 37 [testDiv, 0, comment, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in rangeCount being 1 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 37 [testDiv, 0, comment, 5]: modifying the second added range must modify the Selection's last Range 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 39 [paras[3], 1, comment, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 39 [paras[3], 1, comment, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 39 [paras[3], 1, comment, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 39 [paras[3], 1, comment, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
+Found 1208 tests; 1008 PASS, 200 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must do nothing 
+PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must do nothing 
+PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must do nothing 
+PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must do nothing 
+PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must do nothing 
+PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must do nothing 
+PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must do nothing 
+PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must do nothing 
+PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must do nothing 
+PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must do nothing 
+PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must do nothing 
+PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must do nothing 
+PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must do nothing 
+PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must do nothing 
+PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must do nothing 
+PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must do nothing 
+PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must do nothing 
+PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must do nothing 
+PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must do nothing 
+PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must do nothing 
+PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must do nothing 
+PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must do nothing 
+PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must do nothing 
+PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must do nothing 
+PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must do nothing 
+PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must do nothing 
+PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must do nothing 
+PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must do nothing 
+PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must do nothing 
+PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must do nothing 
+PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must do nothing 
+PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must do nothing 
+PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must do nothing 
+PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must do nothing 
+PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 34 [document, 0, document, 1]: first addRange() must do nothing 
+PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 35 [document, 0, document, 2]: first addRange() must do nothing 
+PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 36 [document, 1, document, 2]: first addRange() must do nothing 
+PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must do nothing 
+PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must do nothing 
+PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must do nothing 
+PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must do nothing 
+PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must do nothing 
+PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must do nothing 
+PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must do nothing 
+PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must do nothing 
+PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must do nothing 
+PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must do nothing 
+PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must do nothing 
+PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must do nothing 
+PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must do nothing 
+PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must do nothing 
+PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must do nothing 
+PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must do nothing 
+PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must do nothing 
+PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must do nothing 
+PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must do nothing 
+PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must do nothing 
+PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must do nothing 
+PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must do nothing 
+PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must do nothing 
+PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must do nothing 
+PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must do nothing 
+PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must do nothing 
+PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must do nothing 
+PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must do nothing 
+PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must do nothing 
+PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must do nothing 
+PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must do nothing 
+PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must do nothing 
+PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must do nothing 
+PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must do nothing 
+PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must do nothing 
+PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must do nothing 
+PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must do nothing 
+PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must do nothing 
+PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must do nothing 
+PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must do nothing 
+PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must do nothing 
+PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must do nothing 
+PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must do nothing 
+PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must do nothing 
+PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must do nothing 
+PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must do nothing 
+PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must do nothing 
+PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must do nothing 
+PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must do nothing 
+PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must do nothing 
+PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must do nothing 
+PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must do nothing 
+PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must do nothing 
+PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must do nothing 
+PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must do nothing 
+PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 34 [document, 0, document, 1]: first addRange() must do nothing 
+PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 35 [document, 0, document, 2]: first addRange() must do nothing 
+PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 36 [document, 1, document, 2]: first addRange() must do nothing 
+PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must do nothing 
+PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must do nothing 
+PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must do nothing 
+PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must do nothing 
+PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must do nothing 
+PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must do nothing 
+PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must do nothing 
+PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must do nothing 
+PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must do nothing 
+PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must do nothing 
+PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must do nothing 
+PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must do nothing 
+PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must do nothing 
+PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must do nothing 
+PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must do nothing 
+PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must do nothing 
+PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must do nothing 
+PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must do nothing 
+PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must do nothing 
+PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must do nothing 
+PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must do nothing 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -1570,78 +276,42 @@
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must do nothing 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "O" but got object ""
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must do nothing 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "qrstuv" but got object ""
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must do nothing 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must do nothing 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "E" but got object ""
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must do nothing 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "ghijkl" but got object ""
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must do nothing 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -1776,39 +446,21 @@
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title></title></head><body><p>Efghijkl</p><p... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must do nothing 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <head><title></title></head> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must do nothing 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <body><p>Efghijkl</p><p>Mnopqrst</p>I admit that I harbor... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must do nothing 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in rangeCount being 1 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -1845,26 +497,14 @@
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <p>Opqrstuv</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must do nothing 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <p>Opqrstuv</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Opqrstuv" but got object ""
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must do nothing 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -1976,13 +616,7 @@
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title></title></head><body><p>Efghijkl</p><p... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must do nothing 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 34 [document, 0, document, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 34 [document, 0, document, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -2129,234 +763,126 @@
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 3 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must do nothing 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in rangeCount being 1 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the first added range must modify the Selection's last Range 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in rangeCount being 1 
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 3 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "EfghijklMnopqrstI admit that I harbor doubts about whether we really need so many things to test, but it's too late to stop now." but got object ""
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must do nothing 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in rangeCount being 1 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the first added range must modify the Selection's last Range 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in rangeCount being 1 
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <body><p>Efghijkl</p><p>Mnopqrst</p>I admit that I harbor... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "EfghijklMnopqrstI admit that I harbor doubts about w" but got object ""
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must do nothing 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 4 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must do nothing 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 4 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "do re mi fa so la ti" but got object ""
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must do nothing 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Uvwxyzab" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Uvwxyzab" but got object ""
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must do nothing 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in rangeCount being 1 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the first added range must modify the Selection's last Range 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in rangeCount being 1 
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Cdefghij" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must do nothing 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Cdefghij" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Cdefghij" but got object ""
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must do nothing 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in rangeCount being 1 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the first added range must modify the Selection's last Range 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in rangeCount being 1 
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Klmnopqr" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must do nothing 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Klmnopqr" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Klmnopqr" but got object ""
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must do nothing 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in rangeCount being 1 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the first added range must modify the Selection's last Range 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in rangeCount being 1 
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--Stuvwxyz--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must do nothing 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in rangeCount being 1 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the first added range must modify the Selection's last Range 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in rangeCount being 1 
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--Stuvwxyz--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must do nothing 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--אריה יהודה--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must do nothing 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in rangeCount being 1 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the first added range must modify the Selection's last Range 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in rangeCount being 1 
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--אריה יהודה--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must do nothing 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in rangeCount being 1 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the first added range must modify the Selection's last Range 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in rangeCount being 1 
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--בן חיים אליעזר--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must do nothing 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must do nothing 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must do nothing 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must do nothing 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -2468,78 +994,42 @@
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must do nothing 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "O" but got object ""
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must do nothing 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "qrstuv" but got object ""
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must do nothing 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must do nothing 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "E" but got object ""
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must do nothing 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "ghijkl" but got object ""
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must do nothing 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -2674,39 +1164,21 @@
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title></title></head><body><p>Efghijkl</p><p... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must do nothing 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <head><title></title></head> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must do nothing 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <body><p>Efghijkl</p><p>Mnopqrst</p>I admit that I harbor... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must do nothing 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in rangeCount being 1 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -2743,26 +1215,14 @@
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <p>Opqrstuv</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must do nothing 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <p>Opqrstuv</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Opqrstuv" but got object ""
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must do nothing 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -2874,13 +1334,7 @@
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title></title></head><body><p>Efghijkl</p><p... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must do nothing 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 34 [document, 0, document, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 34 [document, 0, document, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -3027,233 +1481,125 @@
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 3 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must do nothing 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in rangeCount being 1 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the first added range must modify the Selection's last Range 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in rangeCount being 1 
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 3 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "EfghijklMnopqrstI admit that I harbor doubts about whether we really need so many things to test, but it's too late to stop now." but got object ""
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must do nothing 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in rangeCount being 1 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the first added range must modify the Selection's last Range 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in rangeCount being 1 
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <body><p>Efghijkl</p><p>Mnopqrst</p>I admit that I harbor... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "EfghijklMnopqrstI admit that I harbor doubts about w" but got object ""
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must do nothing 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 4 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must do nothing 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 4 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "do re mi fa so la ti" but got object ""
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must do nothing 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Uvwxyzab" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Uvwxyzab" but got object ""
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must do nothing 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in rangeCount being 1 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the first added range must modify the Selection's last Range 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in rangeCount being 1 
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Cdefghij" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must do nothing 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Cdefghij" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Cdefghij" but got object ""
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must do nothing 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in rangeCount being 1 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the first added range must modify the Selection's last Range 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in rangeCount being 1 
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Klmnopqr" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must do nothing 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Klmnopqr" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Klmnopqr" but got object ""
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must do nothing 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in rangeCount being 1 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the first added range must modify the Selection's last Range 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in rangeCount being 1 
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--Stuvwxyz--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must do nothing 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in rangeCount being 1 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the first added range must modify the Selection's last Range 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in rangeCount being 1 
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--Stuvwxyz--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must do nothing 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--אריה יהודה--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must do nothing 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in rangeCount being 1 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the first added range must modify the Selection's last Range 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in rangeCount being 1 
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--אריה יהודה--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must do nothing 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in rangeCount being 1 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the first added range must modify the Selection's last Range 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in rangeCount being 1 
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--בן חיים אליעזר--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must do nothing 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must do nothing 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must do nothing 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must do nothing 
 Harness: the test ran to completion.
 
diff --git a/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-16-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-16-expected.txt
index 60b092e80..a13058b3 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-16-expected.txt
+++ b/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-16-expected.txt
@@ -1,87 +1,78 @@
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE WARNING: line 7: The behavior that Selection.addRange() merges existing Range and the specified Range is deprecated and will be removed in M58, around April 2017. See https://www.chromestatus.com/features/6680566019653632 for more details.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE WARNING: line 24: The behavior that Selection.addRange() merges existing Range and the specified Range is deprecated and will be removed in M58, around April 2017. See https://www.chromestatus.com/features/6680566019653632 for more details.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
 This is a testharness.js-based test.
-Found 2784 tests; 1684 PASS, 1100 FAIL, 0 TIMEOUT, 0 NOTRUN.
+Found 1696 tests; 1396 PASS, 300 FAIL, 0 TIMEOUT, 0 NOTRUN.
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -193,78 +184,42 @@
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must do nothing 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "O" but got object ""
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must do nothing 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "qrstuv" but got object ""
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must do nothing 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must do nothing 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "E" but got object ""
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must do nothing 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "ghijkl" but got object ""
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must do nothing 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -399,39 +354,21 @@
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title></title></head><body><p>Efghijkl</p><p... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must do nothing 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <head><title></title></head> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must do nothing 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <body><p>Efghijkl</p><p>Mnopqrst</p>I admit that I harbor... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must do nothing 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in rangeCount being 1 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -468,26 +405,14 @@
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <p>Opqrstuv</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must do nothing 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <p>Opqrstuv</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Opqrstuv" but got object ""
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must do nothing 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -599,13 +524,7 @@
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title></title></head><body><p>Efghijkl</p><p... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must do nothing 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 34 [document, 0, document, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 34 [document, 0, document, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -752,234 +671,126 @@
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 3 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must do nothing 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in rangeCount being 1 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the first added range must modify the Selection's last Range 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in rangeCount being 1 
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 3 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "EfghijklMnopqrstI admit that I harbor doubts about whether we really need so many things to test, but it's too late to stop now." but got object ""
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must do nothing 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in rangeCount being 1 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the first added range must modify the Selection's last Range 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in rangeCount being 1 
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <body><p>Efghijkl</p><p>Mnopqrst</p>I admit that I harbor... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "EfghijklMnopqrstI admit that I harbor doubts about w" but got object ""
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must do nothing 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 4 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must do nothing 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 4 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "do re mi fa so la ti" but got object ""
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must do nothing 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Uvwxyzab" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Uvwxyzab" but got object ""
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must do nothing 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in rangeCount being 1 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the first added range must modify the Selection's last Range 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in rangeCount being 1 
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Cdefghij" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must do nothing 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Cdefghij" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Cdefghij" but got object ""
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must do nothing 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in rangeCount being 1 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the first added range must modify the Selection's last Range 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in rangeCount being 1 
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Klmnopqr" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must do nothing 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Klmnopqr" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Klmnopqr" but got object ""
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must do nothing 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in rangeCount being 1 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the first added range must modify the Selection's last Range 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in rangeCount being 1 
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--Stuvwxyz--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must do nothing 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in rangeCount being 1 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the first added range must modify the Selection's last Range 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in rangeCount being 1 
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--Stuvwxyz--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must do nothing 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--אריה יהודה--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must do nothing 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in rangeCount being 1 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the first added range must modify the Selection's last Range 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in rangeCount being 1 
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--אריה יהודה--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must do nothing 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in rangeCount being 1 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the first added range must modify the Selection's last Range 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in rangeCount being 1 
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--בן חיים אליעזר--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must do nothing 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must do nothing 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must do nothing 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must do nothing 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -1091,78 +902,42 @@
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 17 [document.head, 1, document.head, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 17 [document.head, 1, document.head, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 17 [document.head, 1, document.head, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must do nothing 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 17 [document.head, 1, document.head, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 17 [document.head, 1, document.head, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "O" but got object ""
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 17 [document.head, 1, document.head, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must do nothing 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 17 [document.head, 1, document.head, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 17 [document.head, 1, document.head, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "qrstuv" but got object ""
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 17 [document.head, 1, document.head, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must do nothing 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 17 [document.head, 1, document.head, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 17 [document.head, 1, document.head, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 17 [document.head, 1, document.head, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must do nothing 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 17 [document.head, 1, document.head, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 17 [document.head, 1, document.head, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "E" but got object ""
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 17 [document.head, 1, document.head, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must do nothing 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 17 [document.head, 1, document.head, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 17 [document.head, 1, document.head, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "ghijkl" but got object ""
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 17 [document.head, 1, document.head, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must do nothing 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -1297,39 +1072,21 @@
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 17 [document.head, 1, document.head, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 17 [document.head, 1, document.head, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title></title></head><body><p>Efghijkl</p><p... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 17 [document.head, 1, document.head, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must do nothing 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 17 [document.head, 1, document.head, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 17 [document.head, 1, document.head, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <head><title></title></head> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 17 [document.head, 1, document.head, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must do nothing 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 17 [document.head, 1, document.head, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 17 [document.head, 1, document.head, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <body><p>Efghijkl</p><p>Mnopqrst</p>I admit that I harbor... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 17 [document.head, 1, document.head, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must do nothing 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in rangeCount being 1 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -1366,26 +1123,14 @@
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 17 [document.head, 1, document.head, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 17 [document.head, 1, document.head, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <p>Opqrstuv</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 17 [document.head, 1, document.head, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must do nothing 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 17 [document.head, 1, document.head, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 17 [document.head, 1, document.head, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <p>Opqrstuv</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Opqrstuv" but got object ""
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 17 [document.head, 1, document.head, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must do nothing 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -1497,13 +1242,7 @@
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 17 [document.head, 1, document.head, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 17 [document.head, 1, document.head, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title></title></head><body><p>Efghijkl</p><p... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 17 [document.head, 1, document.head, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must do nothing 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 34 [document, 0, document, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 34 [document, 0, document, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -1650,234 +1389,126 @@
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 17 [document.head, 1, document.head, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 17 [document.head, 1, document.head, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 3 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 17 [document.head, 1, document.head, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must do nothing 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in rangeCount being 1 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the first added range must modify the Selection's last Range 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 17 [document.head, 1, document.head, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 17 [document.head, 1, document.head, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in rangeCount being 1 
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 3 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "EfghijklMnopqrstI admit that I harbor doubts about whether we really need so many things to test, but it's too late to stop now." but got object ""
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 17 [document.head, 1, document.head, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must do nothing 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in rangeCount being 1 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the first added range must modify the Selection's last Range 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 17 [document.head, 1, document.head, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 17 [document.head, 1, document.head, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in rangeCount being 1 
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <body><p>Efghijkl</p><p>Mnopqrst</p>I admit that I harbor... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "EfghijklMnopqrstI admit that I harbor doubts about w" but got object ""
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 17 [document.head, 1, document.head, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must do nothing 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 17 [document.head, 1, document.head, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 17 [document.head, 1, document.head, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 4 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 17 [document.head, 1, document.head, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must do nothing 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 17 [document.head, 1, document.head, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 17 [document.head, 1, document.head, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 4 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "do re mi fa so la ti" but got object ""
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 17 [document.head, 1, document.head, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must do nothing 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 17 [document.head, 1, document.head, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 17 [document.head, 1, document.head, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Uvwxyzab" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Uvwxyzab" but got object ""
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 17 [document.head, 1, document.head, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must do nothing 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in rangeCount being 1 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the first added range must modify the Selection's last Range 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 17 [document.head, 1, document.head, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 17 [document.head, 1, document.head, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in rangeCount being 1 
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Cdefghij" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 17 [document.head, 1, document.head, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must do nothing 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 17 [document.head, 1, document.head, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 17 [document.head, 1, document.head, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Cdefghij" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Cdefghij" but got object ""
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 17 [document.head, 1, document.head, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must do nothing 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in rangeCount being 1 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the first added range must modify the Selection's last Range 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 17 [document.head, 1, document.head, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 17 [document.head, 1, document.head, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in rangeCount being 1 
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Klmnopqr" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 17 [document.head, 1, document.head, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must do nothing 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 17 [document.head, 1, document.head, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 17 [document.head, 1, document.head, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Klmnopqr" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Klmnopqr" but got object ""
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 17 [document.head, 1, document.head, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must do nothing 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in rangeCount being 1 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the first added range must modify the Selection's last Range 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 17 [document.head, 1, document.head, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 17 [document.head, 1, document.head, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in rangeCount being 1 
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--Stuvwxyz--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 17 [document.head, 1, document.head, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must do nothing 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in rangeCount being 1 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the first added range must modify the Selection's last Range 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 17 [document.head, 1, document.head, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 17 [document.head, 1, document.head, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in rangeCount being 1 
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--Stuvwxyz--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 17 [document.head, 1, document.head, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must do nothing 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 17 [document.head, 1, document.head, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 17 [document.head, 1, document.head, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--אריה יהודה--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 17 [document.head, 1, document.head, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must do nothing 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in rangeCount being 1 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the first added range must modify the Selection's last Range 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 17 [document.head, 1, document.head, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 17 [document.head, 1, document.head, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in rangeCount being 1 
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--אריה יהודה--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 17 [document.head, 1, document.head, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must do nothing 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in rangeCount being 1 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the first added range must modify the Selection's last Range 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 17 [document.head, 1, document.head, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 17 [document.head, 1, document.head, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in rangeCount being 1 
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--בן חיים אליעזר--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 17 [document.head, 1, document.head, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must do nothing 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 17 [document.head, 1, document.head, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 17 [document.head, 1, document.head, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 17 [document.head, 1, document.head, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must do nothing 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 17 [document.head, 1, document.head, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 17 [document.head, 1, document.head, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 17 [document.head, 1, document.head, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must do nothing 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 17 [document.head, 1, document.head, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 17 [document.head, 1, document.head, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 17 [document.head, 1, document.head, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must do nothing 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -1989,78 +1620,42 @@
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 18 [document.body, 0, document.body, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 18 [document.body, 0, document.body, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 18 [document.body, 0, document.body, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must do nothing 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 18 [document.body, 0, document.body, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 18 [document.body, 0, document.body, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "O" but got object ""
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 18 [document.body, 0, document.body, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must do nothing 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 18 [document.body, 0, document.body, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 18 [document.body, 0, document.body, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "qrstuv" but got object ""
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 18 [document.body, 0, document.body, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must do nothing 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 18 [document.body, 0, document.body, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 18 [document.body, 0, document.body, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 18 [document.body, 0, document.body, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must do nothing 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 18 [document.body, 0, document.body, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 18 [document.body, 0, document.body, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "E" but got object ""
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 18 [document.body, 0, document.body, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must do nothing 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 18 [document.body, 0, document.body, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 18 [document.body, 0, document.body, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "ghijkl" but got object ""
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 18 [document.body, 0, document.body, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must do nothing 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -2195,39 +1790,21 @@
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 18 [document.body, 0, document.body, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 18 [document.body, 0, document.body, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title></title></head><body><p>Efghijkl</p><p... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 18 [document.body, 0, document.body, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must do nothing 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 18 [document.body, 0, document.body, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 18 [document.body, 0, document.body, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <head><title></title></head> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 18 [document.body, 0, document.body, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must do nothing 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 18 [document.body, 0, document.body, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 18 [document.body, 0, document.body, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <body><p>Efghijkl</p><p>Mnopqrst</p>I admit that I harbor... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 18 [document.body, 0, document.body, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must do nothing 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in rangeCount being 1 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -2264,26 +1841,14 @@
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 18 [document.body, 0, document.body, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 18 [document.body, 0, document.body, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <p>Opqrstuv</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 18 [document.body, 0, document.body, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must do nothing 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 18 [document.body, 0, document.body, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 18 [document.body, 0, document.body, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <p>Opqrstuv</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Opqrstuv" but got object ""
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 18 [document.body, 0, document.body, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must do nothing 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -2395,13 +1960,7 @@
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 18 [document.body, 0, document.body, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 18 [document.body, 0, document.body, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title></title></head><body><p>Efghijkl</p><p... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 18 [document.body, 0, document.body, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must do nothing 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 34 [document, 0, document, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 34 [document, 0, document, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -2548,929 +2107,183 @@
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 18 [document.body, 0, document.body, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 18 [document.body, 0, document.body, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 3 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 18 [document.body, 0, document.body, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must do nothing 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in rangeCount being 1 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the first added range must modify the Selection's last Range 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 18 [document.body, 0, document.body, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 18 [document.body, 0, document.body, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in rangeCount being 1 
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 3 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "EfghijklMnopqrstI admit that I harbor doubts about whether we really need so many things to test, but it's too late to stop now." but got object ""
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 18 [document.body, 0, document.body, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must do nothing 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in rangeCount being 1 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the first added range must modify the Selection's last Range 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 18 [document.body, 0, document.body, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 18 [document.body, 0, document.body, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in rangeCount being 1 
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <body><p>Efghijkl</p><p>Mnopqrst</p>I admit that I harbor... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "EfghijklMnopqrstI admit that I harbor doubts about w" but got object ""
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 18 [document.body, 0, document.body, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must do nothing 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 18 [document.body, 0, document.body, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 18 [document.body, 0, document.body, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 4 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 18 [document.body, 0, document.body, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must do nothing 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 18 [document.body, 0, document.body, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 18 [document.body, 0, document.body, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 4 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "do re mi fa so la ti" but got object ""
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 18 [document.body, 0, document.body, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must do nothing 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 18 [document.body, 0, document.body, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 18 [document.body, 0, document.body, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Uvwxyzab" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Uvwxyzab" but got object ""
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 18 [document.body, 0, document.body, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must do nothing 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in rangeCount being 1 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the first added range must modify the Selection's last Range 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 18 [document.body, 0, document.body, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 18 [document.body, 0, document.body, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in rangeCount being 1 
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Cdefghij" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 18 [document.body, 0, document.body, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must do nothing 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 18 [document.body, 0, document.body, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 18 [document.body, 0, document.body, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Cdefghij" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Cdefghij" but got object ""
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 18 [document.body, 0, document.body, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must do nothing 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in rangeCount being 1 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the first added range must modify the Selection's last Range 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 18 [document.body, 0, document.body, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 18 [document.body, 0, document.body, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in rangeCount being 1 
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Klmnopqr" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 18 [document.body, 0, document.body, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must do nothing 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 18 [document.body, 0, document.body, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 18 [document.body, 0, document.body, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Klmnopqr" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Klmnopqr" but got object ""
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 18 [document.body, 0, document.body, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must do nothing 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in rangeCount being 1 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the first added range must modify the Selection's last Range 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 18 [document.body, 0, document.body, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 18 [document.body, 0, document.body, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in rangeCount being 1 
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--Stuvwxyz--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 18 [document.body, 0, document.body, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must do nothing 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in rangeCount being 1 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the first added range must modify the Selection's last Range 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 18 [document.body, 0, document.body, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 18 [document.body, 0, document.body, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in rangeCount being 1 
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--Stuvwxyz--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 18 [document.body, 0, document.body, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must do nothing 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 18 [document.body, 0, document.body, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 18 [document.body, 0, document.body, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--אריה יהודה--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 18 [document.body, 0, document.body, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must do nothing 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in rangeCount being 1 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the first added range must modify the Selection's last Range 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 18 [document.body, 0, document.body, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 18 [document.body, 0, document.body, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in rangeCount being 1 
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--אריה יהודה--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 18 [document.body, 0, document.body, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must do nothing 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in rangeCount being 1 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the first added range must modify the Selection's last Range 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 18 [document.body, 0, document.body, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 18 [document.body, 0, document.body, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in rangeCount being 1 
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--בן חיים אליעזר--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 18 [document.body, 0, document.body, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must do nothing 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 18 [document.body, 0, document.body, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 18 [document.body, 0, document.body, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 18 [document.body, 0, document.body, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must do nothing 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 18 [document.body, 0, document.body, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 18 [document.body, 0, document.body, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 18 [document.body, 0, document.body, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must do nothing 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 18 [document.body, 0, document.body, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 18 [document.body, 0, document.body, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in rangeCount being 1 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the second added range must modify the Selection's last Range 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in rangeCount being 1 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the second added range must modify the Selection's last Range 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 17 [document.head, 1, document.head, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 17 [document.head, 1, document.head, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 17 [document.head, 1, document.head, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 17 [document.head, 1, document.head, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 18 [document.body, 0, document.body, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 18 [document.body, 0, document.body, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in rangeCount being 1 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in rangeCount being 1 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the second added range must modify the Selection's last Range 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in rangeCount being 1 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the second added range must modify the Selection's last Range 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 34 [document, 0, document, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 34 [document, 0, document, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 34 [document, 0, document, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 34 [document, 0, document, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 34 [document, 0, document, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 34 [document, 0, document, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 34 [document, 0, document, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 34 [document, 0, document, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 34 [document, 0, document, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 34 [document, 0, document, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 35 [document, 0, document, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 35 [document, 0, document, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 35 [document, 0, document, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 35 [document, 0, document, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 35 [document, 0, document, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 35 [document, 0, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 35 [document, 0, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 35 [document, 0, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 35 [document, 0, document, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 35 [document, 0, document, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 36 [document, 1, document, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 36 [document, 1, document, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 36 [document, 1, document, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 36 [document, 1, document, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 36 [document, 1, document, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 36 [document, 1, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 36 [document, 1, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 36 [document, 1, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 36 [document, 1, document, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 36 [document, 1, document, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 37 [testDiv, 0, comment, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in rangeCount being 1 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 37 [testDiv, 0, comment, 5]: modifying the second added range must modify the Selection's last Range 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 39 [paras[3], 1, comment, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 39 [paras[3], 1, comment, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 39 [paras[3], 1, comment, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 39 [paras[3], 1, comment, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
+PASS Range 18 [document.body, 0, document.body, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must do nothing 
+PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must do nothing 
+PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must do nothing 
+PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must do nothing 
+PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must do nothing 
+PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must do nothing 
+PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must do nothing 
+PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must do nothing 
+PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must do nothing 
+PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must do nothing 
+PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must do nothing 
+PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must do nothing 
+PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must do nothing 
+PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must do nothing 
+PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must do nothing 
+PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must do nothing 
+PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must do nothing 
+PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must do nothing 
+PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must do nothing 
+PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must do nothing 
+PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must do nothing 
+PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must do nothing 
+PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must do nothing 
+PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must do nothing 
+PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must do nothing 
+PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must do nothing 
+PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must do nothing 
+PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must do nothing 
+PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must do nothing 
+PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must do nothing 
+PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must do nothing 
+PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must do nothing 
+PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must do nothing 
+PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must do nothing 
+PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must do nothing 
+PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 34 [document, 0, document, 1]: first addRange() must do nothing 
+PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 35 [document, 0, document, 2]: first addRange() must do nothing 
+PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 36 [document, 1, document, 2]: first addRange() must do nothing 
+PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must do nothing 
+PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must do nothing 
+PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must do nothing 
+PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must do nothing 
+PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must do nothing 
+PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must do nothing 
+PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must do nothing 
+PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must do nothing 
+PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must do nothing 
+PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must do nothing 
+PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must do nothing 
+PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must do nothing 
+PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must do nothing 
+PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must do nothing 
+PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must do nothing 
+PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must do nothing 
+PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must do nothing 
+PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must do nothing 
+PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must do nothing 
+PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must do nothing 
+PASS Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must do nothing 
 Harness: the test ran to completion.
 
diff --git a/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-20-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-20-expected.txt
index 7e932a7..6c4ce32 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-20-expected.txt
+++ b/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-20-expected.txt
@@ -1,1464 +1,170 @@
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE WARNING: line 7: The behavior that Selection.addRange() merges existing Range and the specified Range is deprecated and will be removed in M58, around April 2017. See https://www.chromestatus.com/features/6680566019653632 for more details.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE WARNING: line 24: The behavior that Selection.addRange() merges existing Range and the specified Range is deprecated and will be removed in M58, around April 2017. See https://www.chromestatus.com/features/6680566019653632 for more details.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
 This is a testharness.js-based test.
-Found 2784 tests; 1464 PASS, 1320 FAIL, 0 TIMEOUT, 0 NOTRUN.
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in rangeCount being 1 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the second added range must modify the Selection's last Range 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in rangeCount being 1 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the second added range must modify the Selection's last Range 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 17 [document.head, 1, document.head, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 17 [document.head, 1, document.head, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 17 [document.head, 1, document.head, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 17 [document.head, 1, document.head, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 18 [document.body, 0, document.body, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 18 [document.body, 0, document.body, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in rangeCount being 1 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in rangeCount being 1 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the second added range must modify the Selection's last Range 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in rangeCount being 1 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the second added range must modify the Selection's last Range 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 34 [document, 0, document, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 34 [document, 0, document, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 34 [document, 0, document, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 34 [document, 0, document, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 34 [document, 0, document, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 34 [document, 0, document, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 34 [document, 0, document, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 34 [document, 0, document, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 34 [document, 0, document, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 34 [document, 0, document, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 35 [document, 0, document, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 35 [document, 0, document, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 35 [document, 0, document, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 35 [document, 0, document, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 35 [document, 0, document, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 35 [document, 0, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 35 [document, 0, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 35 [document, 0, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 35 [document, 0, document, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 35 [document, 0, document, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 36 [document, 1, document, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 36 [document, 1, document, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 36 [document, 1, document, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 36 [document, 1, document, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 36 [document, 1, document, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 36 [document, 1, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 36 [document, 1, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 36 [document, 1, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 36 [document, 1, document, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 36 [document, 1, document, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 37 [testDiv, 0, comment, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in rangeCount being 1 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 37 [testDiv, 0, comment, 5]: modifying the second added range must modify the Selection's last Range 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 39 [paras[3], 1, comment, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 39 [paras[3], 1, comment, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 39 [paras[3], 1, comment, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 39 [paras[3], 1, comment, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in rangeCount being 1 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the second added range must modify the Selection's last Range 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in rangeCount being 1 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the second added range must modify the Selection's last Range 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 17 [document.head, 1, document.head, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 17 [document.head, 1, document.head, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 17 [document.head, 1, document.head, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 17 [document.head, 1, document.head, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 18 [document.body, 0, document.body, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 18 [document.body, 0, document.body, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in rangeCount being 1 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in rangeCount being 1 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the second added range must modify the Selection's last Range 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in rangeCount being 1 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the second added range must modify the Selection's last Range 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 34 [document, 0, document, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 34 [document, 0, document, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 34 [document, 0, document, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 34 [document, 0, document, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 34 [document, 0, document, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 34 [document, 0, document, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 34 [document, 0, document, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 34 [document, 0, document, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 34 [document, 0, document, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 34 [document, 0, document, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 35 [document, 0, document, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 35 [document, 0, document, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 35 [document, 0, document, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 35 [document, 0, document, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 35 [document, 0, document, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 35 [document, 0, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 35 [document, 0, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 35 [document, 0, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 35 [document, 0, document, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 35 [document, 0, document, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 36 [document, 1, document, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 36 [document, 1, document, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 36 [document, 1, document, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 36 [document, 1, document, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 36 [document, 1, document, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 36 [document, 1, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 36 [document, 1, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 36 [document, 1, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 36 [document, 1, document, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 36 [document, 1, document, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 37 [testDiv, 0, comment, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in rangeCount being 1 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 37 [testDiv, 0, comment, 5]: modifying the second added range must modify the Selection's last Range 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 39 [paras[3], 1, comment, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 39 [paras[3], 1, comment, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 39 [paras[3], 1, comment, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 39 [paras[3], 1, comment, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
+Found 1208 tests; 1008 PASS, 200 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must do nothing 
+PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must do nothing 
+PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must do nothing 
+PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must do nothing 
+PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must do nothing 
+PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must do nothing 
+PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must do nothing 
+PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must do nothing 
+PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must do nothing 
+PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must do nothing 
+PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must do nothing 
+PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must do nothing 
+PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must do nothing 
+PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must do nothing 
+PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must do nothing 
+PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must do nothing 
+PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must do nothing 
+PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must do nothing 
+PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must do nothing 
+PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must do nothing 
+PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must do nothing 
+PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must do nothing 
+PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must do nothing 
+PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must do nothing 
+PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must do nothing 
+PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must do nothing 
+PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must do nothing 
+PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must do nothing 
+PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must do nothing 
+PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must do nothing 
+PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must do nothing 
+PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must do nothing 
+PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must do nothing 
+PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must do nothing 
+PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 34 [document, 0, document, 1]: first addRange() must do nothing 
+PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 35 [document, 0, document, 2]: first addRange() must do nothing 
+PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 36 [document, 1, document, 2]: first addRange() must do nothing 
+PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must do nothing 
+PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must do nothing 
+PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must do nothing 
+PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must do nothing 
+PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must do nothing 
+PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must do nothing 
+PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must do nothing 
+PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must do nothing 
+PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must do nothing 
+PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must do nothing 
+PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must do nothing 
+PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must do nothing 
+PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must do nothing 
+PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must do nothing 
+PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must do nothing 
+PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must do nothing 
+PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must do nothing 
+PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must do nothing 
+PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must do nothing 
+PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must do nothing 
+PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must do nothing 
+PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must do nothing 
+PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must do nothing 
+PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must do nothing 
+PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must do nothing 
+PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must do nothing 
+PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must do nothing 
+PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must do nothing 
+PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must do nothing 
+PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must do nothing 
+PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must do nothing 
+PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must do nothing 
+PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must do nothing 
+PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must do nothing 
+PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must do nothing 
+PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must do nothing 
+PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must do nothing 
+PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must do nothing 
+PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must do nothing 
+PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must do nothing 
+PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must do nothing 
+PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must do nothing 
+PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must do nothing 
+PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must do nothing 
+PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must do nothing 
+PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must do nothing 
+PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must do nothing 
+PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must do nothing 
+PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must do nothing 
+PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must do nothing 
+PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must do nothing 
+PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must do nothing 
+PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must do nothing 
+PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must do nothing 
+PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must do nothing 
+PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 34 [document, 0, document, 1]: first addRange() must do nothing 
+PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 35 [document, 0, document, 2]: first addRange() must do nothing 
+PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 36 [document, 1, document, 2]: first addRange() must do nothing 
+PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must do nothing 
+PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must do nothing 
+PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must do nothing 
+PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must do nothing 
+PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must do nothing 
+PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must do nothing 
+PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must do nothing 
+PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must do nothing 
+PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must do nothing 
+PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must do nothing 
+PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must do nothing 
+PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must do nothing 
+PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must do nothing 
+PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must do nothing 
+PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must do nothing 
+PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must do nothing 
+PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must do nothing 
+PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must do nothing 
+PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must do nothing 
+PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must do nothing 
+PASS Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must do nothing 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -1570,78 +276,42 @@
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must do nothing 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "O" but got object ""
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must do nothing 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "qrstuv" but got object ""
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must do nothing 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must do nothing 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "E" but got object ""
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must do nothing 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "ghijkl" but got object ""
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must do nothing 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -1776,39 +446,21 @@
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title></title></head><body><p>Efghijkl</p><p... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must do nothing 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <head><title></title></head> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must do nothing 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <body><p>Efghijkl</p><p>Mnopqrst</p>I admit that I harbor... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must do nothing 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in rangeCount being 1 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -1845,26 +497,14 @@
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <p>Opqrstuv</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must do nothing 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <p>Opqrstuv</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Opqrstuv" but got object ""
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must do nothing 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -1976,13 +616,7 @@
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title></title></head><body><p>Efghijkl</p><p... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must do nothing 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 34 [document, 0, document, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 34 [document, 0, document, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -2129,234 +763,126 @@
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 3 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must do nothing 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in rangeCount being 1 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the first added range must modify the Selection's last Range 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in rangeCount being 1 
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 3 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "EfghijklMnopqrstI admit that I harbor doubts about whether we really need so many things to test, but it's too late to stop now." but got object ""
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must do nothing 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in rangeCount being 1 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the first added range must modify the Selection's last Range 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in rangeCount being 1 
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <body><p>Efghijkl</p><p>Mnopqrst</p>I admit that I harbor... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "EfghijklMnopqrstI admit that I harbor doubts about w" but got object ""
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must do nothing 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 4 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must do nothing 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 4 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "do re mi fa so la ti" but got object ""
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must do nothing 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Uvwxyzab" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Uvwxyzab" but got object ""
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must do nothing 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in rangeCount being 1 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the first added range must modify the Selection's last Range 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in rangeCount being 1 
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Cdefghij" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must do nothing 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Cdefghij" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Cdefghij" but got object ""
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must do nothing 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in rangeCount being 1 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the first added range must modify the Selection's last Range 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in rangeCount being 1 
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Klmnopqr" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must do nothing 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Klmnopqr" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Klmnopqr" but got object ""
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must do nothing 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in rangeCount being 1 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the first added range must modify the Selection's last Range 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in rangeCount being 1 
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--Stuvwxyz--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must do nothing 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in rangeCount being 1 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the first added range must modify the Selection's last Range 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in rangeCount being 1 
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--Stuvwxyz--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must do nothing 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--אריה יהודה--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must do nothing 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in rangeCount being 1 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the first added range must modify the Selection's last Range 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in rangeCount being 1 
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--אריה יהודה--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must do nothing 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in rangeCount being 1 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the first added range must modify the Selection's last Range 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in rangeCount being 1 
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--בן חיים אליעזר--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must do nothing 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must do nothing 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must do nothing 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must do nothing 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -2468,78 +994,42 @@
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must do nothing 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "O" but got object ""
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must do nothing 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "qrstuv" but got object ""
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must do nothing 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must do nothing 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "E" but got object ""
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must do nothing 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "ghijkl" but got object ""
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must do nothing 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -2674,39 +1164,21 @@
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title></title></head><body><p>Efghijkl</p><p... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must do nothing 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <head><title></title></head> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must do nothing 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <body><p>Efghijkl</p><p>Mnopqrst</p>I admit that I harbor... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must do nothing 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in rangeCount being 1 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -2743,26 +1215,14 @@
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <p>Opqrstuv</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must do nothing 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <p>Opqrstuv</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Opqrstuv" but got object ""
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must do nothing 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -2874,13 +1334,7 @@
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title></title></head><body><p>Efghijkl</p><p... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must do nothing 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 34 [document, 0, document, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 34 [document, 0, document, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -3027,233 +1481,125 @@
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 3 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must do nothing 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in rangeCount being 1 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the first added range must modify the Selection's last Range 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in rangeCount being 1 
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 3 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "EfghijklMnopqrstI admit that I harbor doubts about whether we really need so many things to test, but it's too late to stop now." but got object ""
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must do nothing 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in rangeCount being 1 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the first added range must modify the Selection's last Range 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in rangeCount being 1 
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <body><p>Efghijkl</p><p>Mnopqrst</p>I admit that I harbor... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "EfghijklMnopqrstI admit that I harbor doubts about w" but got object ""
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must do nothing 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 4 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must do nothing 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 4 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "do re mi fa so la ti" but got object ""
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must do nothing 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Uvwxyzab" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Uvwxyzab" but got object ""
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must do nothing 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in rangeCount being 1 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the first added range must modify the Selection's last Range 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in rangeCount being 1 
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Cdefghij" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must do nothing 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Cdefghij" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Cdefghij" but got object ""
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must do nothing 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in rangeCount being 1 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the first added range must modify the Selection's last Range 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in rangeCount being 1 
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Klmnopqr" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must do nothing 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Klmnopqr" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Klmnopqr" but got object ""
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must do nothing 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in rangeCount being 1 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the first added range must modify the Selection's last Range 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in rangeCount being 1 
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--Stuvwxyz--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must do nothing 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in rangeCount being 1 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the first added range must modify the Selection's last Range 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in rangeCount being 1 
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--Stuvwxyz--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must do nothing 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--אריה יהודה--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must do nothing 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in rangeCount being 1 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the first added range must modify the Selection's last Range 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in rangeCount being 1 
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--אריה יהודה--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must do nothing 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in rangeCount being 1 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the first added range must modify the Selection's last Range 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in rangeCount being 1 
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--בן חיים אליעזר--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must do nothing 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must do nothing 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must do nothing 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must do nothing 
 Harness: the test ran to completion.
 
diff --git a/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-24-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-24-expected.txt
index 0fe5b44d..16efcb5 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-24-expected.txt
+++ b/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-24-expected.txt
@@ -1,1580 +1,286 @@
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE WARNING: line 7: The behavior that Selection.addRange() merges existing Range and the specified Range is deprecated and will be removed in M58, around April 2017. See https://www.chromestatus.com/features/6680566019653632 for more details.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE WARNING: line 24: The behavior that Selection.addRange() merges existing Range and the specified Range is deprecated and will be removed in M58, around April 2017. See https://www.chromestatus.com/features/6680566019653632 for more details.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
 This is a testharness.js-based test.
-Found 2784 tests; 1464 PASS, 1320 FAIL, 0 TIMEOUT, 0 NOTRUN.
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in rangeCount being 1 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the second added range must modify the Selection's last Range 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in rangeCount being 1 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the second added range must modify the Selection's last Range 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 17 [document.head, 1, document.head, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 17 [document.head, 1, document.head, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 17 [document.head, 1, document.head, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 17 [document.head, 1, document.head, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 18 [document.body, 0, document.body, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 18 [document.body, 0, document.body, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in rangeCount being 1 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in rangeCount being 1 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the second added range must modify the Selection's last Range 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in rangeCount being 1 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the second added range must modify the Selection's last Range 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 34 [document, 0, document, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 34 [document, 0, document, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 34 [document, 0, document, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 34 [document, 0, document, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 34 [document, 0, document, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 34 [document, 0, document, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 34 [document, 0, document, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 34 [document, 0, document, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 34 [document, 0, document, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 34 [document, 0, document, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 35 [document, 0, document, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 35 [document, 0, document, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 35 [document, 0, document, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 35 [document, 0, document, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 35 [document, 0, document, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 35 [document, 0, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 35 [document, 0, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 35 [document, 0, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 35 [document, 0, document, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 35 [document, 0, document, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 36 [document, 1, document, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 36 [document, 1, document, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 36 [document, 1, document, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 36 [document, 1, document, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 36 [document, 1, document, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 36 [document, 1, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 36 [document, 1, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 36 [document, 1, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 36 [document, 1, document, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 36 [document, 1, document, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 37 [testDiv, 0, comment, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in rangeCount being 1 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 37 [testDiv, 0, comment, 5]: modifying the second added range must modify the Selection's last Range 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 39 [paras[3], 1, comment, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 39 [paras[3], 1, comment, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 39 [paras[3], 1, comment, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 39 [paras[3], 1, comment, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in rangeCount being 1 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the second added range must modify the Selection's last Range 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in rangeCount being 1 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the second added range must modify the Selection's last Range 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 17 [document.head, 1, document.head, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 17 [document.head, 1, document.head, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 17 [document.head, 1, document.head, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 17 [document.head, 1, document.head, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 18 [document.body, 0, document.body, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 18 [document.body, 0, document.body, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in rangeCount being 1 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in rangeCount being 1 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the second added range must modify the Selection's last Range 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in rangeCount being 1 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the second added range must modify the Selection's last Range 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 34 [document, 0, document, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 34 [document, 0, document, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 34 [document, 0, document, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 34 [document, 0, document, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 34 [document, 0, document, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 34 [document, 0, document, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 34 [document, 0, document, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 34 [document, 0, document, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 34 [document, 0, document, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 34 [document, 0, document, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 35 [document, 0, document, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 35 [document, 0, document, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 35 [document, 0, document, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 35 [document, 0, document, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 35 [document, 0, document, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 35 [document, 0, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 35 [document, 0, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 35 [document, 0, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 35 [document, 0, document, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 35 [document, 0, document, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 36 [document, 1, document, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 36 [document, 1, document, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 36 [document, 1, document, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 36 [document, 1, document, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 36 [document, 1, document, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 36 [document, 1, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 36 [document, 1, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 36 [document, 1, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 36 [document, 1, document, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 36 [document, 1, document, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 37 [testDiv, 0, comment, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in rangeCount being 1 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 37 [testDiv, 0, comment, 5]: modifying the second added range must modify the Selection's last Range 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 39 [paras[3], 1, comment, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 39 [paras[3], 1, comment, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 39 [paras[3], 1, comment, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 39 [paras[3], 1, comment, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
+Found 1208 tests; 1008 PASS, 200 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must do nothing 
+PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must do nothing 
+PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must do nothing 
+PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must do nothing 
+PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must do nothing 
+PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must do nothing 
+PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must do nothing 
+PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must do nothing 
+PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must do nothing 
+PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must do nothing 
+PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must do nothing 
+PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must do nothing 
+PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must do nothing 
+PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must do nothing 
+PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must do nothing 
+PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must do nothing 
+PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must do nothing 
+PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must do nothing 
+PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must do nothing 
+PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must do nothing 
+PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must do nothing 
+PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must do nothing 
+PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must do nothing 
+PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must do nothing 
+PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must do nothing 
+PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must do nothing 
+PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must do nothing 
+PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must do nothing 
+PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must do nothing 
+PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must do nothing 
+PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must do nothing 
+PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must do nothing 
+PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must do nothing 
+PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must do nothing 
+PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 34 [document, 0, document, 1]: first addRange() must do nothing 
+PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 35 [document, 0, document, 2]: first addRange() must do nothing 
+PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 36 [document, 1, document, 2]: first addRange() must do nothing 
+PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must do nothing 
+PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must do nothing 
+PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must do nothing 
+PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must do nothing 
+PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must do nothing 
+PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must do nothing 
+PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must do nothing 
+PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must do nothing 
+PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must do nothing 
+PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must do nothing 
+PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must do nothing 
+PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must do nothing 
+PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must do nothing 
+PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must do nothing 
+PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must do nothing 
+PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must do nothing 
+PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must do nothing 
+PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must do nothing 
+PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must do nothing 
+PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must do nothing 
+PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must do nothing 
+PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must do nothing 
+PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must do nothing 
+PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must do nothing 
+PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must do nothing 
+PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must do nothing 
+PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must do nothing 
+PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must do nothing 
+PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must do nothing 
+PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must do nothing 
+PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must do nothing 
+PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must do nothing 
+PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must do nothing 
+PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must do nothing 
+PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must do nothing 
+PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must do nothing 
+PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must do nothing 
+PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must do nothing 
+PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must do nothing 
+PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must do nothing 
+PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must do nothing 
+PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must do nothing 
+PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must do nothing 
+PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must do nothing 
+PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must do nothing 
+PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must do nothing 
+PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must do nothing 
+PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must do nothing 
+PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must do nothing 
+PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must do nothing 
+PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must do nothing 
+PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must do nothing 
+PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must do nothing 
+PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must do nothing 
+PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must do nothing 
+PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 34 [document, 0, document, 1]: first addRange() must do nothing 
+PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 35 [document, 0, document, 2]: first addRange() must do nothing 
+PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 36 [document, 1, document, 2]: first addRange() must do nothing 
+PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must do nothing 
+PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must do nothing 
+PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must do nothing 
+PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must do nothing 
+PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must do nothing 
+PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must do nothing 
+PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must do nothing 
+PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must do nothing 
+PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must do nothing 
+PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must do nothing 
+PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must do nothing 
+PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must do nothing 
+PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must do nothing 
+PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must do nothing 
+PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must do nothing 
+PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must do nothing 
+PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must do nothing 
+PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must do nothing 
+PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must do nothing 
+PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must do nothing 
+PASS Range 25 [detachedPara1, 0, detachedPara1, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must do nothing 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -1686,78 +392,42 @@
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must do nothing 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "O" but got object ""
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must do nothing 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "qrstuv" but got object ""
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must do nothing 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must do nothing 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "E" but got object ""
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must do nothing 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "ghijkl" but got object ""
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must do nothing 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -1892,39 +562,21 @@
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title></title></head><body><p>Efghijkl</p><p... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must do nothing 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <head><title></title></head> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must do nothing 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <body><p>Efghijkl</p><p>Mnopqrst</p>I admit that I harbor... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must do nothing 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in rangeCount being 1 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -1961,26 +613,14 @@
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <p>Opqrstuv</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must do nothing 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <p>Opqrstuv</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Opqrstuv" but got object ""
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must do nothing 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -2092,13 +732,7 @@
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title></title></head><body><p>Efghijkl</p><p... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must do nothing 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 34 [document, 0, document, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 34 [document, 0, document, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -2245,234 +879,126 @@
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 3 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must do nothing 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in rangeCount being 1 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the first added range must modify the Selection's last Range 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in rangeCount being 1 
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 3 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "EfghijklMnopqrstI admit that I harbor doubts about whether we really need so many things to test, but it's too late to stop now." but got object ""
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must do nothing 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in rangeCount being 1 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the first added range must modify the Selection's last Range 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in rangeCount being 1 
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <body><p>Efghijkl</p><p>Mnopqrst</p>I admit that I harbor... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "EfghijklMnopqrstI admit that I harbor doubts about w" but got object ""
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must do nothing 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 4 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must do nothing 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 4 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "do re mi fa so la ti" but got object ""
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must do nothing 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Uvwxyzab" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Uvwxyzab" but got object ""
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must do nothing 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in rangeCount being 1 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the first added range must modify the Selection's last Range 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in rangeCount being 1 
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Cdefghij" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must do nothing 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Cdefghij" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Cdefghij" but got object ""
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must do nothing 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in rangeCount being 1 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the first added range must modify the Selection's last Range 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in rangeCount being 1 
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Klmnopqr" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must do nothing 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Klmnopqr" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Klmnopqr" but got object ""
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must do nothing 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in rangeCount being 1 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the first added range must modify the Selection's last Range 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in rangeCount being 1 
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--Stuvwxyz--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must do nothing 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in rangeCount being 1 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the first added range must modify the Selection's last Range 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in rangeCount being 1 
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--Stuvwxyz--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must do nothing 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--אריה יהודה--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must do nothing 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in rangeCount being 1 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the first added range must modify the Selection's last Range 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in rangeCount being 1 
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--אריה יהודה--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must do nothing 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in rangeCount being 1 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the first added range must modify the Selection's last Range 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in rangeCount being 1 
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--בן חיים אליעזר--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must do nothing 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must do nothing 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must do nothing 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must do nothing 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -2584,78 +1110,42 @@
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must do nothing 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "O" but got object ""
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must do nothing 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "qrstuv" but got object ""
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must do nothing 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must do nothing 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "E" but got object ""
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must do nothing 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "ghijkl" but got object ""
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must do nothing 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -2790,39 +1280,21 @@
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title></title></head><body><p>Efghijkl</p><p... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must do nothing 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <head><title></title></head> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must do nothing 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <body><p>Efghijkl</p><p>Mnopqrst</p>I admit that I harbor... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must do nothing 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in rangeCount being 1 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -2859,26 +1331,14 @@
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <p>Opqrstuv</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must do nothing 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <p>Opqrstuv</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Opqrstuv" but got object ""
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must do nothing 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -2990,13 +1450,7 @@
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title></title></head><body><p>Efghijkl</p><p... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must do nothing 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 34 [document, 0, document, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 34 [document, 0, document, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -3143,233 +1597,125 @@
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 3 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must do nothing 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in rangeCount being 1 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the first added range must modify the Selection's last Range 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in rangeCount being 1 
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 3 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "EfghijklMnopqrstI admit that I harbor doubts about whether we really need so many things to test, but it's too late to stop now." but got object ""
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must do nothing 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in rangeCount being 1 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the first added range must modify the Selection's last Range 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in rangeCount being 1 
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <body><p>Efghijkl</p><p>Mnopqrst</p>I admit that I harbor... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "EfghijklMnopqrstI admit that I harbor doubts about w" but got object ""
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must do nothing 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 4 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must do nothing 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 4 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "do re mi fa so la ti" but got object ""
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must do nothing 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Uvwxyzab" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Uvwxyzab" but got object ""
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must do nothing 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in rangeCount being 1 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the first added range must modify the Selection's last Range 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in rangeCount being 1 
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Cdefghij" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must do nothing 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Cdefghij" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Cdefghij" but got object ""
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must do nothing 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in rangeCount being 1 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the first added range must modify the Selection's last Range 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in rangeCount being 1 
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Klmnopqr" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must do nothing 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Klmnopqr" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Klmnopqr" but got object ""
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must do nothing 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in rangeCount being 1 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the first added range must modify the Selection's last Range 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in rangeCount being 1 
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--Stuvwxyz--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must do nothing 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in rangeCount being 1 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the first added range must modify the Selection's last Range 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in rangeCount being 1 
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--Stuvwxyz--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must do nothing 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--אריה יהודה--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must do nothing 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in rangeCount being 1 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the first added range must modify the Selection's last Range 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in rangeCount being 1 
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--אריה יהודה--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must do nothing 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in rangeCount being 1 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the first added range must modify the Selection's last Range 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in rangeCount being 1 
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--בן חיים אליעזר--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must do nothing 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must do nothing 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must do nothing 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must do nothing 
 Harness: the test ran to completion.
 
diff --git a/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-28-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-28-expected.txt
index c8dcd5b..dccdd28 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-28-expected.txt
+++ b/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-28-expected.txt
@@ -1,102 +1,102 @@
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE WARNING: line 7: The behavior that Selection.addRange() merges existing Range and the specified Range is deprecated and will be removed in M58, around April 2017. See https://www.chromestatus.com/features/6680566019653632 for more details.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE WARNING: line 24: The behavior that Selection.addRange() merges existing Range and the specified Range is deprecated and will be removed in M58, around April 2017. See https://www.chromestatus.com/features/6680566019653632 for more details.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
 This is a testharness.js-based test.
-Found 2784 tests; 1904 PASS, 880 FAIL, 0 TIMEOUT, 0 NOTRUN.
+Found 2184 tests; 1784 PASS, 400 FAIL, 0 TIMEOUT, 0 NOTRUN.
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -208,78 +208,42 @@
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must do nothing 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "O" but got object ""
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must do nothing 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "qrstuv" but got object ""
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must do nothing 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must do nothing 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "E" but got object ""
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must do nothing 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "ghijkl" but got object ""
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must do nothing 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -414,39 +378,21 @@
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title></title></head><body><p>Efghijkl</p><p... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must do nothing 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <head><title></title></head> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must do nothing 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <body><p>Efghijkl</p><p>Mnopqrst</p>I admit that I harbor... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must do nothing 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in rangeCount being 1 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -483,26 +429,14 @@
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <p>Opqrstuv</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must do nothing 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <p>Opqrstuv</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Opqrstuv" but got object ""
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must do nothing 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -614,13 +548,7 @@
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title></title></head><body><p>Efghijkl</p><p... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must do nothing 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 34 [document, 0, document, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 34 [document, 0, document, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -767,234 +695,126 @@
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 3 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must do nothing 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in rangeCount being 1 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the first added range must modify the Selection's last Range 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in rangeCount being 1 
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 3 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "EfghijklMnopqrstI admit that I harbor doubts about whether we really need so many things to test, but it's too late to stop now." but got object ""
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must do nothing 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in rangeCount being 1 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the first added range must modify the Selection's last Range 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in rangeCount being 1 
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <body><p>Efghijkl</p><p>Mnopqrst</p>I admit that I harbor... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "EfghijklMnopqrstI admit that I harbor doubts about w" but got object ""
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must do nothing 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 4 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must do nothing 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 4 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "do re mi fa so la ti" but got object ""
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must do nothing 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Uvwxyzab" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Uvwxyzab" but got object ""
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must do nothing 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in rangeCount being 1 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the first added range must modify the Selection's last Range 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in rangeCount being 1 
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Cdefghij" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must do nothing 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Cdefghij" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Cdefghij" but got object ""
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must do nothing 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in rangeCount being 1 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the first added range must modify the Selection's last Range 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in rangeCount being 1 
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Klmnopqr" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must do nothing 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Klmnopqr" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Klmnopqr" but got object ""
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must do nothing 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in rangeCount being 1 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the first added range must modify the Selection's last Range 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in rangeCount being 1 
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--Stuvwxyz--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must do nothing 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in rangeCount being 1 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the first added range must modify the Selection's last Range 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in rangeCount being 1 
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--Stuvwxyz--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must do nothing 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--אריה יהודה--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must do nothing 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in rangeCount being 1 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the first added range must modify the Selection's last Range 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in rangeCount being 1 
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--אריה יהודה--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must do nothing 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in rangeCount being 1 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the first added range must modify the Selection's last Range 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in rangeCount being 1 
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--בן חיים אליעזר--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must do nothing 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must do nothing 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must do nothing 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must do nothing 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -1106,78 +926,42 @@
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must do nothing 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "O" but got object ""
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must do nothing 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "qrstuv" but got object ""
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must do nothing 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must do nothing 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "E" but got object ""
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must do nothing 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "ghijkl" but got object ""
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must do nothing 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -1312,39 +1096,21 @@
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title></title></head><body><p>Efghijkl</p><p... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must do nothing 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <head><title></title></head> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must do nothing 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <body><p>Efghijkl</p><p>Mnopqrst</p>I admit that I harbor... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must do nothing 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in rangeCount being 1 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -1381,26 +1147,14 @@
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <p>Opqrstuv</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must do nothing 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <p>Opqrstuv</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Opqrstuv" but got object ""
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must do nothing 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -1512,13 +1266,7 @@
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title></title></head><body><p>Efghijkl</p><p... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must do nothing 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 34 [document, 0, document, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 34 [document, 0, document, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -1665,234 +1413,126 @@
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 3 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must do nothing 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in rangeCount being 1 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the first added range must modify the Selection's last Range 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in rangeCount being 1 
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 3 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "EfghijklMnopqrstI admit that I harbor doubts about whether we really need so many things to test, but it's too late to stop now." but got object ""
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must do nothing 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in rangeCount being 1 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the first added range must modify the Selection's last Range 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in rangeCount being 1 
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <body><p>Efghijkl</p><p>Mnopqrst</p>I admit that I harbor... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "EfghijklMnopqrstI admit that I harbor doubts about w" but got object ""
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must do nothing 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 4 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must do nothing 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 4 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "do re mi fa so la ti" but got object ""
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must do nothing 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Uvwxyzab" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Uvwxyzab" but got object ""
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must do nothing 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in rangeCount being 1 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the first added range must modify the Selection's last Range 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in rangeCount being 1 
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Cdefghij" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must do nothing 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Cdefghij" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Cdefghij" but got object ""
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must do nothing 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in rangeCount being 1 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the first added range must modify the Selection's last Range 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in rangeCount being 1 
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Klmnopqr" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must do nothing 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Klmnopqr" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Klmnopqr" but got object ""
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must do nothing 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in rangeCount being 1 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the first added range must modify the Selection's last Range 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in rangeCount being 1 
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--Stuvwxyz--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must do nothing 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in rangeCount being 1 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the first added range must modify the Selection's last Range 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in rangeCount being 1 
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--Stuvwxyz--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must do nothing 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--אריה יהודה--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must do nothing 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in rangeCount being 1 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the first added range must modify the Selection's last Range 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in rangeCount being 1 
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--אריה יהודה--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must do nothing 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in rangeCount being 1 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the first added range must modify the Selection's last Range 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in rangeCount being 1 
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--בן חיים אליעזר--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must do nothing 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must do nothing 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must do nothing 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must do nothing 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -2004,78 +1644,42 @@
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must do nothing 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "O" but got object ""
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must do nothing 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "qrstuv" but got object ""
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must do nothing 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must do nothing 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "E" but got object ""
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must do nothing 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "ghijkl" but got object ""
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must do nothing 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -2210,39 +1814,21 @@
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title></title></head><body><p>Efghijkl</p><p... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must do nothing 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <head><title></title></head> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must do nothing 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <body><p>Efghijkl</p><p>Mnopqrst</p>I admit that I harbor... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must do nothing 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in rangeCount being 1 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -2279,26 +1865,14 @@
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <p>Opqrstuv</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must do nothing 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <p>Opqrstuv</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Opqrstuv" but got object ""
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must do nothing 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -2410,13 +1984,7 @@
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title></title></head><body><p>Efghijkl</p><p... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must do nothing 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 34 [document, 0, document, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 34 [document, 0, document, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -2563,234 +2131,126 @@
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 3 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must do nothing 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in rangeCount being 1 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the first added range must modify the Selection's last Range 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in rangeCount being 1 
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 3 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "EfghijklMnopqrstI admit that I harbor doubts about whether we really need so many things to test, but it's too late to stop now." but got object ""
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must do nothing 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in rangeCount being 1 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the first added range must modify the Selection's last Range 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in rangeCount being 1 
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <body><p>Efghijkl</p><p>Mnopqrst</p>I admit that I harbor... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "EfghijklMnopqrstI admit that I harbor doubts about w" but got object ""
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must do nothing 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 4 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must do nothing 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 4 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "do re mi fa so la ti" but got object ""
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must do nothing 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Uvwxyzab" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Uvwxyzab" but got object ""
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must do nothing 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in rangeCount being 1 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the first added range must modify the Selection's last Range 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in rangeCount being 1 
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Cdefghij" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must do nothing 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Cdefghij" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Cdefghij" but got object ""
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must do nothing 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in rangeCount being 1 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the first added range must modify the Selection's last Range 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in rangeCount being 1 
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Klmnopqr" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must do nothing 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Klmnopqr" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Klmnopqr" but got object ""
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must do nothing 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in rangeCount being 1 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the first added range must modify the Selection's last Range 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in rangeCount being 1 
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--Stuvwxyz--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must do nothing 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in rangeCount being 1 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the first added range must modify the Selection's last Range 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in rangeCount being 1 
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--Stuvwxyz--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must do nothing 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--אריה יהודה--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must do nothing 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in rangeCount being 1 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the first added range must modify the Selection's last Range 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in rangeCount being 1 
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--אריה יהודה--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must do nothing 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in rangeCount being 1 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the first added range must modify the Selection's last Range 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in rangeCount being 1 
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--בן חיים אליעזר--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must do nothing 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must do nothing 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must do nothing 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must do nothing 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -2902,78 +2362,42 @@
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must do nothing 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "O" but got object ""
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must do nothing 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "qrstuv" but got object ""
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must do nothing 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must do nothing 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "E" but got object ""
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must do nothing 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "ghijkl" but got object ""
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must do nothing 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -3108,39 +2532,21 @@
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title></title></head><body><p>Efghijkl</p><p... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must do nothing 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <head><title></title></head> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must do nothing 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <body><p>Efghijkl</p><p>Mnopqrst</p>I admit that I harbor... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must do nothing 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in rangeCount being 1 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -3177,26 +2583,14 @@
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <p>Opqrstuv</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must do nothing 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <p>Opqrstuv</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Opqrstuv" but got object ""
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must do nothing 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -3308,13 +2702,7 @@
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title></title></head><body><p>Efghijkl</p><p... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must do nothing 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 34 [document, 0, document, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 34 [document, 0, document, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -3461,233 +2849,125 @@
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 3 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must do nothing 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in rangeCount being 1 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the first added range must modify the Selection's last Range 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in rangeCount being 1 
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 3 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "EfghijklMnopqrstI admit that I harbor doubts about whether we really need so many things to test, but it's too late to stop now." but got object ""
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must do nothing 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in rangeCount being 1 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the first added range must modify the Selection's last Range 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in rangeCount being 1 
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <body><p>Efghijkl</p><p>Mnopqrst</p>I admit that I harbor... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "EfghijklMnopqrstI admit that I harbor doubts about w" but got object ""
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must do nothing 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 4 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must do nothing 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 4 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "do re mi fa so la ti" but got object ""
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must do nothing 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Uvwxyzab" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Uvwxyzab" but got object ""
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must do nothing 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in rangeCount being 1 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the first added range must modify the Selection's last Range 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in rangeCount being 1 
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Cdefghij" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must do nothing 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Cdefghij" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Cdefghij" but got object ""
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must do nothing 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in rangeCount being 1 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the first added range must modify the Selection's last Range 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in rangeCount being 1 
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Klmnopqr" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must do nothing 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Klmnopqr" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Klmnopqr" but got object ""
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must do nothing 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in rangeCount being 1 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the first added range must modify the Selection's last Range 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in rangeCount being 1 
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--Stuvwxyz--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must do nothing 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in rangeCount being 1 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the first added range must modify the Selection's last Range 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in rangeCount being 1 
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--Stuvwxyz--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must do nothing 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--אריה יהודה--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must do nothing 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in rangeCount being 1 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the first added range must modify the Selection's last Range 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in rangeCount being 1 
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--אריה יהודה--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must do nothing 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in rangeCount being 1 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the first added range must modify the Selection's last Range 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in rangeCount being 1 
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--בן חיים אליעזר--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must do nothing 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must do nothing 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must do nothing 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must do nothing 
 Harness: the test ran to completion.
 
diff --git a/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-32-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-32-expected.txt
index 4d42dc9..ca8e651 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-32-expected.txt
+++ b/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-32-expected.txt
@@ -1,87 +1,78 @@
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE WARNING: line 7: The behavior that Selection.addRange() merges existing Range and the specified Range is deprecated and will be removed in M58, around April 2017. See https://www.chromestatus.com/features/6680566019653632 for more details.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE WARNING: line 24: The behavior that Selection.addRange() merges existing Range and the specified Range is deprecated and will be removed in M58, around April 2017. See https://www.chromestatus.com/features/6680566019653632 for more details.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
 This is a testharness.js-based test.
-Found 2784 tests; 1684 PASS, 1100 FAIL, 0 TIMEOUT, 0 NOTRUN.
+Found 1696 tests; 1396 PASS, 300 FAIL, 0 TIMEOUT, 0 NOTRUN.
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -193,78 +184,42 @@
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must do nothing 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "O" but got object ""
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must do nothing 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "qrstuv" but got object ""
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must do nothing 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must do nothing 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "E" but got object ""
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must do nothing 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "ghijkl" but got object ""
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must do nothing 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -399,39 +354,21 @@
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title></title></head><body><p>Efghijkl</p><p... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must do nothing 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <head><title></title></head> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must do nothing 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <body><p>Efghijkl</p><p>Mnopqrst</p>I admit that I harbor... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must do nothing 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in rangeCount being 1 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -468,26 +405,14 @@
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <p>Opqrstuv</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must do nothing 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <p>Opqrstuv</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Opqrstuv" but got object ""
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must do nothing 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -599,13 +524,7 @@
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title></title></head><body><p>Efghijkl</p><p... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must do nothing 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 34 [document, 0, document, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 34 [document, 0, document, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -752,930 +671,184 @@
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 3 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must do nothing 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in rangeCount being 1 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the first added range must modify the Selection's last Range 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in rangeCount being 1 
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 3 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "EfghijklMnopqrstI admit that I harbor doubts about whether we really need so many things to test, but it's too late to stop now." but got object ""
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must do nothing 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in rangeCount being 1 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the first added range must modify the Selection's last Range 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in rangeCount being 1 
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <body><p>Efghijkl</p><p>Mnopqrst</p>I admit that I harbor... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "EfghijklMnopqrstI admit that I harbor doubts about w" but got object ""
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must do nothing 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 4 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must do nothing 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 4 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "do re mi fa so la ti" but got object ""
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must do nothing 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Uvwxyzab" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Uvwxyzab" but got object ""
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must do nothing 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in rangeCount being 1 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the first added range must modify the Selection's last Range 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in rangeCount being 1 
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Cdefghij" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must do nothing 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Cdefghij" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Cdefghij" but got object ""
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must do nothing 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in rangeCount being 1 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the first added range must modify the Selection's last Range 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in rangeCount being 1 
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Klmnopqr" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must do nothing 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Klmnopqr" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Klmnopqr" but got object ""
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must do nothing 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in rangeCount being 1 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the first added range must modify the Selection's last Range 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in rangeCount being 1 
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--Stuvwxyz--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must do nothing 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in rangeCount being 1 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the first added range must modify the Selection's last Range 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in rangeCount being 1 
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--Stuvwxyz--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must do nothing 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--אריה יהודה--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must do nothing 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in rangeCount being 1 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the first added range must modify the Selection's last Range 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in rangeCount being 1 
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--אריה יהודה--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must do nothing 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in rangeCount being 1 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the first added range must modify the Selection's last Range 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in rangeCount being 1 
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--בן חיים אליעזר--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must do nothing 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must do nothing 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must do nothing 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in rangeCount being 1 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the second added range must modify the Selection's last Range 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in rangeCount being 1 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the second added range must modify the Selection's last Range 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 17 [document.head, 1, document.head, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 17 [document.head, 1, document.head, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 17 [document.head, 1, document.head, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 17 [document.head, 1, document.head, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 18 [document.body, 0, document.body, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 18 [document.body, 0, document.body, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in rangeCount being 1 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in rangeCount being 1 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the second added range must modify the Selection's last Range 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in rangeCount being 1 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the second added range must modify the Selection's last Range 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 34 [document, 0, document, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 34 [document, 0, document, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 34 [document, 0, document, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 34 [document, 0, document, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 34 [document, 0, document, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 34 [document, 0, document, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 34 [document, 0, document, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 34 [document, 0, document, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 34 [document, 0, document, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 34 [document, 0, document, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 35 [document, 0, document, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 35 [document, 0, document, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 35 [document, 0, document, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 35 [document, 0, document, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 35 [document, 0, document, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 35 [document, 0, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 35 [document, 0, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 35 [document, 0, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 35 [document, 0, document, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 35 [document, 0, document, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 36 [document, 1, document, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 36 [document, 1, document, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 36 [document, 1, document, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 36 [document, 1, document, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 36 [document, 1, document, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 36 [document, 1, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 36 [document, 1, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 36 [document, 1, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 36 [document, 1, document, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 36 [document, 1, document, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 37 [testDiv, 0, comment, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in rangeCount being 1 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 37 [testDiv, 0, comment, 5]: modifying the second added range must modify the Selection's last Range 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 39 [paras[3], 1, comment, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 39 [paras[3], 1, comment, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 39 [paras[3], 1, comment, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 39 [paras[3], 1, comment, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
+PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must do nothing 
+PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must do nothing 
+PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must do nothing 
+PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must do nothing 
+PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must do nothing 
+PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must do nothing 
+PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must do nothing 
+PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must do nothing 
+PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must do nothing 
+PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must do nothing 
+PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must do nothing 
+PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must do nothing 
+PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must do nothing 
+PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must do nothing 
+PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must do nothing 
+PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must do nothing 
+PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must do nothing 
+PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must do nothing 
+PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must do nothing 
+PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must do nothing 
+PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must do nothing 
+PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must do nothing 
+PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must do nothing 
+PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must do nothing 
+PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must do nothing 
+PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must do nothing 
+PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must do nothing 
+PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must do nothing 
+PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must do nothing 
+PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must do nothing 
+PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must do nothing 
+PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must do nothing 
+PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must do nothing 
+PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must do nothing 
+PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must do nothing 
+PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 34 [document, 0, document, 1]: first addRange() must do nothing 
+PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 35 [document, 0, document, 2]: first addRange() must do nothing 
+PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 36 [document, 1, document, 2]: first addRange() must do nothing 
+PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must do nothing 
+PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must do nothing 
+PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must do nothing 
+PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must do nothing 
+PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must do nothing 
+PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must do nothing 
+PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must do nothing 
+PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must do nothing 
+PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must do nothing 
+PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must do nothing 
+PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must do nothing 
+PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must do nothing 
+PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must do nothing 
+PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must do nothing 
+PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must do nothing 
+PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must do nothing 
+PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must do nothing 
+PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must do nothing 
+PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must do nothing 
+PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must do nothing 
+PASS Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must do nothing 
 PASS Range 34 [document, 0, document, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 34 [document, 0, document, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 34 [document, 0, document, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -1787,78 +960,42 @@
 PASS Range 34 [document, 0, document, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 34 [document, 0, document, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 34 [document, 0, document, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 34 [document, 0, document, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 34 [document, 0, document, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 34 [document, 0, document, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 34 [document, 0, document, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 34 [document, 0, document, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 34 [document, 0, document, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 34 [document, 0, document, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must do nothing 
 PASS Range 34 [document, 0, document, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 34 [document, 0, document, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 34 [document, 0, document, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 34 [document, 0, document, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 34 [document, 0, document, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 34 [document, 0, document, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 34 [document, 0, document, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 34 [document, 0, document, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 34 [document, 0, document, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 34 [document, 0, document, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "O" but got object ""
-FAIL Range 34 [document, 0, document, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 34 [document, 0, document, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 34 [document, 0, document, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must do nothing 
 PASS Range 34 [document, 0, document, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 34 [document, 0, document, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 34 [document, 0, document, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 34 [document, 0, document, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 34 [document, 0, document, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 34 [document, 0, document, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 34 [document, 0, document, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 34 [document, 0, document, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 34 [document, 0, document, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 34 [document, 0, document, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "qrstuv" but got object ""
-FAIL Range 34 [document, 0, document, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 34 [document, 0, document, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 34 [document, 0, document, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must do nothing 
 PASS Range 34 [document, 0, document, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 34 [document, 0, document, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 34 [document, 0, document, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 34 [document, 0, document, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 34 [document, 0, document, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 34 [document, 0, document, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 34 [document, 0, document, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 34 [document, 0, document, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 34 [document, 0, document, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 34 [document, 0, document, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 34 [document, 0, document, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 34 [document, 0, document, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 34 [document, 0, document, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must do nothing 
 PASS Range 34 [document, 0, document, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 34 [document, 0, document, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 34 [document, 0, document, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 34 [document, 0, document, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 34 [document, 0, document, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 34 [document, 0, document, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 34 [document, 0, document, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 34 [document, 0, document, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 34 [document, 0, document, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 34 [document, 0, document, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "E" but got object ""
-FAIL Range 34 [document, 0, document, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 34 [document, 0, document, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 34 [document, 0, document, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must do nothing 
 PASS Range 34 [document, 0, document, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 34 [document, 0, document, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 34 [document, 0, document, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 34 [document, 0, document, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 34 [document, 0, document, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 34 [document, 0, document, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 34 [document, 0, document, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 34 [document, 0, document, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 34 [document, 0, document, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 34 [document, 0, document, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "ghijkl" but got object ""
-FAIL Range 34 [document, 0, document, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 34 [document, 0, document, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 34 [document, 0, document, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must do nothing 
 PASS Range 34 [document, 0, document, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 34 [document, 0, document, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 34 [document, 0, document, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -1993,39 +1130,21 @@
 PASS Range 34 [document, 0, document, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 34 [document, 0, document, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 34 [document, 0, document, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 34 [document, 0, document, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 34 [document, 0, document, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 34 [document, 0, document, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title></title></head><body><p>Efghijkl</p><p... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 34 [document, 0, document, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 34 [document, 0, document, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 34 [document, 0, document, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 34 [document, 0, document, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must do nothing 
 PASS Range 34 [document, 0, document, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 34 [document, 0, document, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 34 [document, 0, document, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 34 [document, 0, document, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 34 [document, 0, document, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 34 [document, 0, document, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 34 [document, 0, document, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 34 [document, 0, document, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 34 [document, 0, document, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <head><title></title></head> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 34 [document, 0, document, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 34 [document, 0, document, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 34 [document, 0, document, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 34 [document, 0, document, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must do nothing 
 PASS Range 34 [document, 0, document, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 34 [document, 0, document, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 34 [document, 0, document, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 34 [document, 0, document, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 34 [document, 0, document, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 34 [document, 0, document, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 34 [document, 0, document, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 34 [document, 0, document, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 34 [document, 0, document, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <body><p>Efghijkl</p><p>Mnopqrst</p>I admit that I harbor... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 34 [document, 0, document, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 34 [document, 0, document, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 34 [document, 0, document, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 34 [document, 0, document, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must do nothing 
 PASS Range 34 [document, 0, document, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 34 [document, 0, document, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in rangeCount being 1 
 PASS Range 34 [document, 0, document, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -2062,26 +1181,14 @@
 PASS Range 34 [document, 0, document, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 34 [document, 0, document, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 34 [document, 0, document, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 34 [document, 0, document, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 34 [document, 0, document, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 34 [document, 0, document, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <p>Opqrstuv</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 34 [document, 0, document, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 34 [document, 0, document, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 34 [document, 0, document, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 34 [document, 0, document, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must do nothing 
 PASS Range 34 [document, 0, document, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 34 [document, 0, document, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 34 [document, 0, document, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 34 [document, 0, document, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 34 [document, 0, document, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 34 [document, 0, document, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 34 [document, 0, document, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 34 [document, 0, document, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 34 [document, 0, document, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <p>Opqrstuv</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 34 [document, 0, document, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Opqrstuv" but got object ""
-FAIL Range 34 [document, 0, document, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 34 [document, 0, document, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 34 [document, 0, document, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must do nothing 
 PASS Range 34 [document, 0, document, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 34 [document, 0, document, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 34 [document, 0, document, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -2193,13 +1300,7 @@
 PASS Range 34 [document, 0, document, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 34 [document, 0, document, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 34 [document, 0, document, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 34 [document, 0, document, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 34 [document, 0, document, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 34 [document, 0, document, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title></title></head><body><p>Efghijkl</p><p... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 34 [document, 0, document, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 34 [document, 0, document, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 34 [document, 0, document, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 34 [document, 0, document, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must do nothing 
 PASS Range 34 [document, 0, document, 1] followed by Range 34 [document, 0, document, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 34 [document, 0, document, 1] followed by Range 34 [document, 0, document, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 34 [document, 0, document, 1] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -2346,234 +1447,126 @@
 PASS Range 34 [document, 0, document, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 34 [document, 0, document, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 34 [document, 0, document, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 34 [document, 0, document, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 34 [document, 0, document, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 34 [document, 0, document, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 3 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 34 [document, 0, document, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 34 [document, 0, document, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 34 [document, 0, document, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 34 [document, 0, document, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must do nothing 
 PASS Range 34 [document, 0, document, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 34 [document, 0, document, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in rangeCount being 1 
 PASS Range 34 [document, 0, document, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 34 [document, 0, document, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 34 [document, 0, document, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the first added range must modify the Selection's last Range 
 PASS Range 34 [document, 0, document, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 34 [document, 0, document, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 34 [document, 0, document, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in rangeCount being 1 
-FAIL Range 34 [document, 0, document, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 3 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 34 [document, 0, document, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "EfghijklMnopqrstI admit that I harbor doubts about whether we really need so many things to test, but it's too late to stop now." but got object ""
-FAIL Range 34 [document, 0, document, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 34 [document, 0, document, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 34 [document, 0, document, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must do nothing 
 PASS Range 34 [document, 0, document, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 34 [document, 0, document, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in rangeCount being 1 
 PASS Range 34 [document, 0, document, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 34 [document, 0, document, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 34 [document, 0, document, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the first added range must modify the Selection's last Range 
 PASS Range 34 [document, 0, document, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 34 [document, 0, document, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 34 [document, 0, document, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in rangeCount being 1 
-FAIL Range 34 [document, 0, document, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <body><p>Efghijkl</p><p>Mnopqrst</p>I admit that I harbor... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 34 [document, 0, document, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "EfghijklMnopqrstI admit that I harbor doubts about w" but got object ""
-FAIL Range 34 [document, 0, document, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 34 [document, 0, document, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 34 [document, 0, document, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must do nothing 
 PASS Range 34 [document, 0, document, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 34 [document, 0, document, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 34 [document, 0, document, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 34 [document, 0, document, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 34 [document, 0, document, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 34 [document, 0, document, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 34 [document, 0, document, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 34 [document, 0, document, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 34 [document, 0, document, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 4 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 34 [document, 0, document, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 34 [document, 0, document, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 34 [document, 0, document, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 34 [document, 0, document, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must do nothing 
 PASS Range 34 [document, 0, document, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 34 [document, 0, document, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 34 [document, 0, document, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 34 [document, 0, document, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 34 [document, 0, document, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 34 [document, 0, document, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 34 [document, 0, document, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 34 [document, 0, document, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 34 [document, 0, document, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 4 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 34 [document, 0, document, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "do re mi fa so la ti" but got object ""
-FAIL Range 34 [document, 0, document, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 34 [document, 0, document, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 34 [document, 0, document, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must do nothing 
 PASS Range 34 [document, 0, document, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 34 [document, 0, document, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 34 [document, 0, document, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 34 [document, 0, document, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 34 [document, 0, document, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 34 [document, 0, document, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 34 [document, 0, document, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 34 [document, 0, document, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 34 [document, 0, document, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Uvwxyzab" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 34 [document, 0, document, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Uvwxyzab" but got object ""
-FAIL Range 34 [document, 0, document, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 34 [document, 0, document, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 34 [document, 0, document, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must do nothing 
 PASS Range 34 [document, 0, document, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 34 [document, 0, document, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in rangeCount being 1 
 PASS Range 34 [document, 0, document, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 34 [document, 0, document, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 34 [document, 0, document, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the first added range must modify the Selection's last Range 
 PASS Range 34 [document, 0, document, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 34 [document, 0, document, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 34 [document, 0, document, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in rangeCount being 1 
-FAIL Range 34 [document, 0, document, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Cdefghij" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 34 [document, 0, document, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 34 [document, 0, document, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 34 [document, 0, document, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 34 [document, 0, document, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must do nothing 
 PASS Range 34 [document, 0, document, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 34 [document, 0, document, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 34 [document, 0, document, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 34 [document, 0, document, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 34 [document, 0, document, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 34 [document, 0, document, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 34 [document, 0, document, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 34 [document, 0, document, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 34 [document, 0, document, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Cdefghij" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 34 [document, 0, document, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Cdefghij" but got object ""
-FAIL Range 34 [document, 0, document, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 34 [document, 0, document, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 34 [document, 0, document, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must do nothing 
 PASS Range 34 [document, 0, document, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 34 [document, 0, document, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in rangeCount being 1 
 PASS Range 34 [document, 0, document, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 34 [document, 0, document, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 34 [document, 0, document, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the first added range must modify the Selection's last Range 
 PASS Range 34 [document, 0, document, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 34 [document, 0, document, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 34 [document, 0, document, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in rangeCount being 1 
-FAIL Range 34 [document, 0, document, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Klmnopqr" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 34 [document, 0, document, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 34 [document, 0, document, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 34 [document, 0, document, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 34 [document, 0, document, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must do nothing 
 PASS Range 34 [document, 0, document, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 34 [document, 0, document, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 34 [document, 0, document, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 34 [document, 0, document, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 34 [document, 0, document, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 34 [document, 0, document, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 34 [document, 0, document, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 34 [document, 0, document, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 34 [document, 0, document, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Klmnopqr" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 34 [document, 0, document, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Klmnopqr" but got object ""
-FAIL Range 34 [document, 0, document, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 34 [document, 0, document, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 34 [document, 0, document, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must do nothing 
 PASS Range 34 [document, 0, document, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 34 [document, 0, document, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in rangeCount being 1 
 PASS Range 34 [document, 0, document, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 34 [document, 0, document, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 34 [document, 0, document, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the first added range must modify the Selection's last Range 
 PASS Range 34 [document, 0, document, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 34 [document, 0, document, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 34 [document, 0, document, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in rangeCount being 1 
-FAIL Range 34 [document, 0, document, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--Stuvwxyz--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 34 [document, 0, document, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 34 [document, 0, document, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 34 [document, 0, document, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 34 [document, 0, document, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must do nothing 
 PASS Range 34 [document, 0, document, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 34 [document, 0, document, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in rangeCount being 1 
 PASS Range 34 [document, 0, document, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 34 [document, 0, document, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 34 [document, 0, document, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the first added range must modify the Selection's last Range 
 PASS Range 34 [document, 0, document, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 34 [document, 0, document, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 34 [document, 0, document, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in rangeCount being 1 
-FAIL Range 34 [document, 0, document, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--Stuvwxyz--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 34 [document, 0, document, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 34 [document, 0, document, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 34 [document, 0, document, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 34 [document, 0, document, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must do nothing 
 PASS Range 34 [document, 0, document, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 34 [document, 0, document, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 34 [document, 0, document, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 34 [document, 0, document, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 34 [document, 0, document, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 34 [document, 0, document, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 34 [document, 0, document, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 34 [document, 0, document, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 34 [document, 0, document, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--אריה יהודה--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 34 [document, 0, document, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 34 [document, 0, document, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 34 [document, 0, document, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 34 [document, 0, document, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must do nothing 
 PASS Range 34 [document, 0, document, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 34 [document, 0, document, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in rangeCount being 1 
 PASS Range 34 [document, 0, document, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 34 [document, 0, document, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 34 [document, 0, document, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the first added range must modify the Selection's last Range 
 PASS Range 34 [document, 0, document, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 34 [document, 0, document, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 34 [document, 0, document, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in rangeCount being 1 
-FAIL Range 34 [document, 0, document, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--אריה יהודה--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 34 [document, 0, document, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 34 [document, 0, document, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 34 [document, 0, document, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 34 [document, 0, document, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must do nothing 
 PASS Range 34 [document, 0, document, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 34 [document, 0, document, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in rangeCount being 1 
 PASS Range 34 [document, 0, document, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 34 [document, 0, document, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 34 [document, 0, document, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the first added range must modify the Selection's last Range 
 PASS Range 34 [document, 0, document, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 34 [document, 0, document, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 34 [document, 0, document, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in rangeCount being 1 
-FAIL Range 34 [document, 0, document, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--בן חיים אליעזר--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 34 [document, 0, document, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 34 [document, 0, document, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 34 [document, 0, document, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 34 [document, 0, document, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must do nothing 
 PASS Range 34 [document, 0, document, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 34 [document, 0, document, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 34 [document, 0, document, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 34 [document, 0, document, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 34 [document, 0, document, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 34 [document, 0, document, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 34 [document, 0, document, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 34 [document, 0, document, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 34 [document, 0, document, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 34 [document, 0, document, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 34 [document, 0, document, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 34 [document, 0, document, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 34 [document, 0, document, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must do nothing 
 PASS Range 34 [document, 0, document, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 34 [document, 0, document, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 34 [document, 0, document, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 34 [document, 0, document, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 34 [document, 0, document, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 34 [document, 0, document, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 34 [document, 0, document, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 34 [document, 0, document, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 34 [document, 0, document, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 34 [document, 0, document, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 34 [document, 0, document, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 34 [document, 0, document, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 34 [document, 0, document, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must do nothing 
 PASS Range 34 [document, 0, document, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 34 [document, 0, document, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 34 [document, 0, document, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 34 [document, 0, document, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 34 [document, 0, document, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 34 [document, 0, document, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 34 [document, 0, document, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 34 [document, 0, document, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 34 [document, 0, document, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 34 [document, 0, document, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 34 [document, 0, document, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 34 [document, 0, document, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 34 [document, 0, document, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must do nothing 
 PASS Range 35 [document, 0, document, 2] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 35 [document, 0, document, 2] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 35 [document, 0, document, 2] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -2685,78 +1678,42 @@
 PASS Range 35 [document, 0, document, 2] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 35 [document, 0, document, 2] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 35 [document, 0, document, 2] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 35 [document, 0, document, 2] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 35 [document, 0, document, 2] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 35 [document, 0, document, 2] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 35 [document, 0, document, 2] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 35 [document, 0, document, 2] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 35 [document, 0, document, 2] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 35 [document, 0, document, 2] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must do nothing 
 PASS Range 35 [document, 0, document, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 35 [document, 0, document, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 35 [document, 0, document, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 35 [document, 0, document, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 35 [document, 0, document, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 35 [document, 0, document, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 35 [document, 0, document, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 35 [document, 0, document, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 35 [document, 0, document, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 35 [document, 0, document, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "O" but got object ""
-FAIL Range 35 [document, 0, document, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 35 [document, 0, document, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 35 [document, 0, document, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must do nothing 
 PASS Range 35 [document, 0, document, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 35 [document, 0, document, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 35 [document, 0, document, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 35 [document, 0, document, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 35 [document, 0, document, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 35 [document, 0, document, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 35 [document, 0, document, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 35 [document, 0, document, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 35 [document, 0, document, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 35 [document, 0, document, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "qrstuv" but got object ""
-FAIL Range 35 [document, 0, document, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 35 [document, 0, document, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 35 [document, 0, document, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must do nothing 
 PASS Range 35 [document, 0, document, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 35 [document, 0, document, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 35 [document, 0, document, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 35 [document, 0, document, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 35 [document, 0, document, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 35 [document, 0, document, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 35 [document, 0, document, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 35 [document, 0, document, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 35 [document, 0, document, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 35 [document, 0, document, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 35 [document, 0, document, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 35 [document, 0, document, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 35 [document, 0, document, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must do nothing 
 PASS Range 35 [document, 0, document, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 35 [document, 0, document, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 35 [document, 0, document, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 35 [document, 0, document, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 35 [document, 0, document, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 35 [document, 0, document, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 35 [document, 0, document, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 35 [document, 0, document, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 35 [document, 0, document, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 35 [document, 0, document, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "E" but got object ""
-FAIL Range 35 [document, 0, document, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 35 [document, 0, document, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 35 [document, 0, document, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must do nothing 
 PASS Range 35 [document, 0, document, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 35 [document, 0, document, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 35 [document, 0, document, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 35 [document, 0, document, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 35 [document, 0, document, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 35 [document, 0, document, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 35 [document, 0, document, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 35 [document, 0, document, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 35 [document, 0, document, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 35 [document, 0, document, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "ghijkl" but got object ""
-FAIL Range 35 [document, 0, document, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 35 [document, 0, document, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 35 [document, 0, document, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must do nothing 
 PASS Range 35 [document, 0, document, 2] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 35 [document, 0, document, 2] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 35 [document, 0, document, 2] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -2891,39 +1848,21 @@
 PASS Range 35 [document, 0, document, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 35 [document, 0, document, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 35 [document, 0, document, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 35 [document, 0, document, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 35 [document, 0, document, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 35 [document, 0, document, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title></title></head><body><p>Efghijkl</p><p... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 35 [document, 0, document, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 35 [document, 0, document, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 35 [document, 0, document, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 35 [document, 0, document, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must do nothing 
 PASS Range 35 [document, 0, document, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 35 [document, 0, document, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 35 [document, 0, document, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 35 [document, 0, document, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 35 [document, 0, document, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 35 [document, 0, document, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 35 [document, 0, document, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 35 [document, 0, document, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 35 [document, 0, document, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <head><title></title></head> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 35 [document, 0, document, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 35 [document, 0, document, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 35 [document, 0, document, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 35 [document, 0, document, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must do nothing 
 PASS Range 35 [document, 0, document, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 35 [document, 0, document, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 35 [document, 0, document, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 35 [document, 0, document, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 35 [document, 0, document, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 35 [document, 0, document, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 35 [document, 0, document, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 35 [document, 0, document, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 35 [document, 0, document, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <body><p>Efghijkl</p><p>Mnopqrst</p>I admit that I harbor... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 35 [document, 0, document, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 35 [document, 0, document, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 35 [document, 0, document, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 35 [document, 0, document, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must do nothing 
 PASS Range 35 [document, 0, document, 2] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 35 [document, 0, document, 2] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in rangeCount being 1 
 PASS Range 35 [document, 0, document, 2] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -2960,26 +1899,14 @@
 PASS Range 35 [document, 0, document, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 35 [document, 0, document, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 35 [document, 0, document, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 35 [document, 0, document, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 35 [document, 0, document, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 35 [document, 0, document, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <p>Opqrstuv</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 35 [document, 0, document, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 35 [document, 0, document, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 35 [document, 0, document, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 35 [document, 0, document, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must do nothing 
 PASS Range 35 [document, 0, document, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 35 [document, 0, document, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 35 [document, 0, document, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 35 [document, 0, document, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 35 [document, 0, document, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 35 [document, 0, document, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 35 [document, 0, document, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 35 [document, 0, document, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 35 [document, 0, document, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <p>Opqrstuv</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 35 [document, 0, document, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Opqrstuv" but got object ""
-FAIL Range 35 [document, 0, document, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 35 [document, 0, document, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 35 [document, 0, document, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must do nothing 
 PASS Range 35 [document, 0, document, 2] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 35 [document, 0, document, 2] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 35 [document, 0, document, 2] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -3091,13 +2018,7 @@
 PASS Range 35 [document, 0, document, 2] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 35 [document, 0, document, 2] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 35 [document, 0, document, 2] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 35 [document, 0, document, 2] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 35 [document, 0, document, 2] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 35 [document, 0, document, 2] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title></title></head><body><p>Efghijkl</p><p... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 35 [document, 0, document, 2] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 35 [document, 0, document, 2] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 35 [document, 0, document, 2] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 35 [document, 0, document, 2] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must do nothing 
 PASS Range 35 [document, 0, document, 2] followed by Range 34 [document, 0, document, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 35 [document, 0, document, 2] followed by Range 34 [document, 0, document, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 35 [document, 0, document, 2] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -3244,233 +2165,125 @@
 PASS Range 35 [document, 0, document, 2] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 35 [document, 0, document, 2] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 35 [document, 0, document, 2] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 35 [document, 0, document, 2] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 35 [document, 0, document, 2] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 35 [document, 0, document, 2] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 3 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 35 [document, 0, document, 2] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 35 [document, 0, document, 2] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 35 [document, 0, document, 2] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 35 [document, 0, document, 2] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must do nothing 
 PASS Range 35 [document, 0, document, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 35 [document, 0, document, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in rangeCount being 1 
 PASS Range 35 [document, 0, document, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 35 [document, 0, document, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 35 [document, 0, document, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the first added range must modify the Selection's last Range 
 PASS Range 35 [document, 0, document, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 35 [document, 0, document, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 35 [document, 0, document, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in rangeCount being 1 
-FAIL Range 35 [document, 0, document, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 3 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 35 [document, 0, document, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "EfghijklMnopqrstI admit that I harbor doubts about whether we really need so many things to test, but it's too late to stop now." but got object ""
-FAIL Range 35 [document, 0, document, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 35 [document, 0, document, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 35 [document, 0, document, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must do nothing 
 PASS Range 35 [document, 0, document, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 35 [document, 0, document, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in rangeCount being 1 
 PASS Range 35 [document, 0, document, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 35 [document, 0, document, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 35 [document, 0, document, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the first added range must modify the Selection's last Range 
 PASS Range 35 [document, 0, document, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 35 [document, 0, document, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 35 [document, 0, document, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in rangeCount being 1 
-FAIL Range 35 [document, 0, document, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <body><p>Efghijkl</p><p>Mnopqrst</p>I admit that I harbor... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 35 [document, 0, document, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "EfghijklMnopqrstI admit that I harbor doubts about w" but got object ""
-FAIL Range 35 [document, 0, document, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 35 [document, 0, document, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 35 [document, 0, document, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must do nothing 
 PASS Range 35 [document, 0, document, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 35 [document, 0, document, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 35 [document, 0, document, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 35 [document, 0, document, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 35 [document, 0, document, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 35 [document, 0, document, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 35 [document, 0, document, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 35 [document, 0, document, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 35 [document, 0, document, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 4 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 35 [document, 0, document, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 35 [document, 0, document, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 35 [document, 0, document, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 35 [document, 0, document, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must do nothing 
 PASS Range 35 [document, 0, document, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 35 [document, 0, document, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 35 [document, 0, document, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 35 [document, 0, document, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 35 [document, 0, document, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 35 [document, 0, document, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 35 [document, 0, document, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 35 [document, 0, document, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 35 [document, 0, document, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 4 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 35 [document, 0, document, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "do re mi fa so la ti" but got object ""
-FAIL Range 35 [document, 0, document, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 35 [document, 0, document, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 35 [document, 0, document, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must do nothing 
 PASS Range 35 [document, 0, document, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 35 [document, 0, document, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 35 [document, 0, document, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 35 [document, 0, document, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 35 [document, 0, document, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 35 [document, 0, document, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 35 [document, 0, document, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 35 [document, 0, document, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 35 [document, 0, document, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Uvwxyzab" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 35 [document, 0, document, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Uvwxyzab" but got object ""
-FAIL Range 35 [document, 0, document, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 35 [document, 0, document, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 35 [document, 0, document, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must do nothing 
 PASS Range 35 [document, 0, document, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 35 [document, 0, document, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in rangeCount being 1 
 PASS Range 35 [document, 0, document, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 35 [document, 0, document, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 35 [document, 0, document, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the first added range must modify the Selection's last Range 
 PASS Range 35 [document, 0, document, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 35 [document, 0, document, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 35 [document, 0, document, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in rangeCount being 1 
-FAIL Range 35 [document, 0, document, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Cdefghij" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 35 [document, 0, document, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 35 [document, 0, document, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 35 [document, 0, document, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 35 [document, 0, document, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must do nothing 
 PASS Range 35 [document, 0, document, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 35 [document, 0, document, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 35 [document, 0, document, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 35 [document, 0, document, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 35 [document, 0, document, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 35 [document, 0, document, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 35 [document, 0, document, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 35 [document, 0, document, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 35 [document, 0, document, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Cdefghij" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 35 [document, 0, document, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Cdefghij" but got object ""
-FAIL Range 35 [document, 0, document, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 35 [document, 0, document, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 35 [document, 0, document, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must do nothing 
 PASS Range 35 [document, 0, document, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 35 [document, 0, document, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in rangeCount being 1 
 PASS Range 35 [document, 0, document, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 35 [document, 0, document, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 35 [document, 0, document, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the first added range must modify the Selection's last Range 
 PASS Range 35 [document, 0, document, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 35 [document, 0, document, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 35 [document, 0, document, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in rangeCount being 1 
-FAIL Range 35 [document, 0, document, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Klmnopqr" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 35 [document, 0, document, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 35 [document, 0, document, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 35 [document, 0, document, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 35 [document, 0, document, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must do nothing 
 PASS Range 35 [document, 0, document, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 35 [document, 0, document, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 35 [document, 0, document, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 35 [document, 0, document, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 35 [document, 0, document, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 35 [document, 0, document, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 35 [document, 0, document, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 35 [document, 0, document, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 35 [document, 0, document, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Klmnopqr" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 35 [document, 0, document, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Klmnopqr" but got object ""
-FAIL Range 35 [document, 0, document, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 35 [document, 0, document, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 35 [document, 0, document, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must do nothing 
 PASS Range 35 [document, 0, document, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 35 [document, 0, document, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in rangeCount being 1 
 PASS Range 35 [document, 0, document, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 35 [document, 0, document, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 35 [document, 0, document, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the first added range must modify the Selection's last Range 
 PASS Range 35 [document, 0, document, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 35 [document, 0, document, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 35 [document, 0, document, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in rangeCount being 1 
-FAIL Range 35 [document, 0, document, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--Stuvwxyz--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 35 [document, 0, document, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 35 [document, 0, document, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 35 [document, 0, document, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 35 [document, 0, document, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must do nothing 
 PASS Range 35 [document, 0, document, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 35 [document, 0, document, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in rangeCount being 1 
 PASS Range 35 [document, 0, document, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 35 [document, 0, document, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 35 [document, 0, document, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the first added range must modify the Selection's last Range 
 PASS Range 35 [document, 0, document, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 35 [document, 0, document, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 35 [document, 0, document, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in rangeCount being 1 
-FAIL Range 35 [document, 0, document, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--Stuvwxyz--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 35 [document, 0, document, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 35 [document, 0, document, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 35 [document, 0, document, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 35 [document, 0, document, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must do nothing 
 PASS Range 35 [document, 0, document, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 35 [document, 0, document, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 35 [document, 0, document, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 35 [document, 0, document, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 35 [document, 0, document, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 35 [document, 0, document, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 35 [document, 0, document, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 35 [document, 0, document, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 35 [document, 0, document, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--אריה יהודה--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 35 [document, 0, document, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 35 [document, 0, document, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 35 [document, 0, document, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 35 [document, 0, document, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must do nothing 
 PASS Range 35 [document, 0, document, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 35 [document, 0, document, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in rangeCount being 1 
 PASS Range 35 [document, 0, document, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 35 [document, 0, document, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 35 [document, 0, document, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the first added range must modify the Selection's last Range 
 PASS Range 35 [document, 0, document, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 35 [document, 0, document, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 35 [document, 0, document, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in rangeCount being 1 
-FAIL Range 35 [document, 0, document, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--אריה יהודה--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 35 [document, 0, document, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 35 [document, 0, document, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 35 [document, 0, document, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 35 [document, 0, document, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must do nothing 
 PASS Range 35 [document, 0, document, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 35 [document, 0, document, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in rangeCount being 1 
 PASS Range 35 [document, 0, document, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 35 [document, 0, document, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 35 [document, 0, document, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the first added range must modify the Selection's last Range 
 PASS Range 35 [document, 0, document, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 35 [document, 0, document, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 35 [document, 0, document, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in rangeCount being 1 
-FAIL Range 35 [document, 0, document, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--בן חיים אליעזר--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 35 [document, 0, document, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 35 [document, 0, document, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 35 [document, 0, document, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 35 [document, 0, document, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must do nothing 
 PASS Range 35 [document, 0, document, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 35 [document, 0, document, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 35 [document, 0, document, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 35 [document, 0, document, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 35 [document, 0, document, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 35 [document, 0, document, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 35 [document, 0, document, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 35 [document, 0, document, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 35 [document, 0, document, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 35 [document, 0, document, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 35 [document, 0, document, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 35 [document, 0, document, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 35 [document, 0, document, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must do nothing 
 PASS Range 35 [document, 0, document, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 35 [document, 0, document, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 35 [document, 0, document, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 35 [document, 0, document, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 35 [document, 0, document, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 35 [document, 0, document, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 35 [document, 0, document, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 35 [document, 0, document, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 35 [document, 0, document, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 35 [document, 0, document, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 35 [document, 0, document, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 35 [document, 0, document, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 35 [document, 0, document, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must do nothing 
 PASS Range 35 [document, 0, document, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 35 [document, 0, document, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 35 [document, 0, document, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 35 [document, 0, document, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 35 [document, 0, document, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 35 [document, 0, document, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 35 [document, 0, document, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 35 [document, 0, document, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 35 [document, 0, document, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 35 [document, 0, document, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 35 [document, 0, document, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 35 [document, 0, document, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 35 [document, 0, document, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must do nothing 
 Harness: the test ran to completion.
 
diff --git a/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-36-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-36-expected.txt
index da4e1684..0184bd0c 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-36-expected.txt
+++ b/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-36-expected.txt
@@ -1,102 +1,102 @@
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE WARNING: line 7: The behavior that Selection.addRange() merges existing Range and the specified Range is deprecated and will be removed in M58, around April 2017. See https://www.chromestatus.com/features/6680566019653632 for more details.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: Discontiguous selection is not supported.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE WARNING: line 24: The behavior that Selection.addRange() merges existing Range and the specified Range is deprecated and will be removed in M58, around April 2017. See https://www.chromestatus.com/features/6680566019653632 for more details.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
 This is a testharness.js-based test.
-Found 2784 tests; 1904 PASS, 880 FAIL, 0 TIMEOUT, 0 NOTRUN.
+Found 2184 tests; 1784 PASS, 400 FAIL, 0 TIMEOUT, 0 NOTRUN.
 PASS Range 36 [document, 1, document, 2] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 36 [document, 1, document, 2] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 36 [document, 1, document, 2] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -208,78 +208,42 @@
 PASS Range 36 [document, 1, document, 2] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 36 [document, 1, document, 2] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 36 [document, 1, document, 2] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 36 [document, 1, document, 2] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 36 [document, 1, document, 2] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 36 [document, 1, document, 2] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 36 [document, 1, document, 2] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 36 [document, 1, document, 2] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 36 [document, 1, document, 2] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 36 [document, 1, document, 2] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must do nothing 
 PASS Range 36 [document, 1, document, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 36 [document, 1, document, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 36 [document, 1, document, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 36 [document, 1, document, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 36 [document, 1, document, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 36 [document, 1, document, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 36 [document, 1, document, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 36 [document, 1, document, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 36 [document, 1, document, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 36 [document, 1, document, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "O" but got object ""
-FAIL Range 36 [document, 1, document, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 36 [document, 1, document, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 36 [document, 1, document, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must do nothing 
 PASS Range 36 [document, 1, document, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 36 [document, 1, document, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 36 [document, 1, document, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 36 [document, 1, document, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 36 [document, 1, document, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 36 [document, 1, document, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 36 [document, 1, document, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 36 [document, 1, document, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 36 [document, 1, document, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 36 [document, 1, document, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "qrstuv" but got object ""
-FAIL Range 36 [document, 1, document, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 36 [document, 1, document, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 36 [document, 1, document, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must do nothing 
 PASS Range 36 [document, 1, document, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 36 [document, 1, document, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 36 [document, 1, document, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 36 [document, 1, document, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 36 [document, 1, document, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 36 [document, 1, document, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 36 [document, 1, document, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 36 [document, 1, document, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 36 [document, 1, document, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 36 [document, 1, document, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 36 [document, 1, document, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 36 [document, 1, document, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 36 [document, 1, document, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must do nothing 
 PASS Range 36 [document, 1, document, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 36 [document, 1, document, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 36 [document, 1, document, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 36 [document, 1, document, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 36 [document, 1, document, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 36 [document, 1, document, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 36 [document, 1, document, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 36 [document, 1, document, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 36 [document, 1, document, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 36 [document, 1, document, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "E" but got object ""
-FAIL Range 36 [document, 1, document, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 36 [document, 1, document, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 36 [document, 1, document, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must do nothing 
 PASS Range 36 [document, 1, document, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 36 [document, 1, document, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 36 [document, 1, document, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 36 [document, 1, document, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 36 [document, 1, document, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 36 [document, 1, document, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 36 [document, 1, document, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 36 [document, 1, document, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 36 [document, 1, document, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 36 [document, 1, document, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "ghijkl" but got object ""
-FAIL Range 36 [document, 1, document, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 36 [document, 1, document, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 36 [document, 1, document, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must do nothing 
 PASS Range 36 [document, 1, document, 2] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 36 [document, 1, document, 2] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 36 [document, 1, document, 2] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -414,39 +378,21 @@
 PASS Range 36 [document, 1, document, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 36 [document, 1, document, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 36 [document, 1, document, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 36 [document, 1, document, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 36 [document, 1, document, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 36 [document, 1, document, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title></title></head><body><p>Efghijkl</p><p... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 36 [document, 1, document, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 36 [document, 1, document, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 36 [document, 1, document, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 36 [document, 1, document, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must do nothing 
 PASS Range 36 [document, 1, document, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 36 [document, 1, document, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 36 [document, 1, document, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 36 [document, 1, document, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 36 [document, 1, document, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 36 [document, 1, document, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 36 [document, 1, document, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 36 [document, 1, document, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 36 [document, 1, document, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <head><title></title></head> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 36 [document, 1, document, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 36 [document, 1, document, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 36 [document, 1, document, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 36 [document, 1, document, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must do nothing 
 PASS Range 36 [document, 1, document, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 36 [document, 1, document, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 36 [document, 1, document, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 36 [document, 1, document, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 36 [document, 1, document, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 36 [document, 1, document, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 36 [document, 1, document, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 36 [document, 1, document, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 36 [document, 1, document, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <body><p>Efghijkl</p><p>Mnopqrst</p>I admit that I harbor... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 36 [document, 1, document, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 36 [document, 1, document, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 36 [document, 1, document, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 36 [document, 1, document, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must do nothing 
 PASS Range 36 [document, 1, document, 2] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 36 [document, 1, document, 2] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in rangeCount being 1 
 PASS Range 36 [document, 1, document, 2] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -483,26 +429,14 @@
 PASS Range 36 [document, 1, document, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 36 [document, 1, document, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 36 [document, 1, document, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 36 [document, 1, document, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 36 [document, 1, document, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 36 [document, 1, document, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <p>Opqrstuv</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 36 [document, 1, document, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 36 [document, 1, document, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 36 [document, 1, document, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 36 [document, 1, document, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must do nothing 
 PASS Range 36 [document, 1, document, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 36 [document, 1, document, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 36 [document, 1, document, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 36 [document, 1, document, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 36 [document, 1, document, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 36 [document, 1, document, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 36 [document, 1, document, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 36 [document, 1, document, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 36 [document, 1, document, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <p>Opqrstuv</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 36 [document, 1, document, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Opqrstuv" but got object ""
-FAIL Range 36 [document, 1, document, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 36 [document, 1, document, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 36 [document, 1, document, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must do nothing 
 PASS Range 36 [document, 1, document, 2] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 36 [document, 1, document, 2] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 36 [document, 1, document, 2] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -614,13 +548,7 @@
 PASS Range 36 [document, 1, document, 2] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 36 [document, 1, document, 2] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 36 [document, 1, document, 2] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 36 [document, 1, document, 2] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 36 [document, 1, document, 2] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 36 [document, 1, document, 2] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title></title></head><body><p>Efghijkl</p><p... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 36 [document, 1, document, 2] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 36 [document, 1, document, 2] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 36 [document, 1, document, 2] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 36 [document, 1, document, 2] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must do nothing 
 PASS Range 36 [document, 1, document, 2] followed by Range 34 [document, 0, document, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 36 [document, 1, document, 2] followed by Range 34 [document, 0, document, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 36 [document, 1, document, 2] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -767,234 +695,126 @@
 PASS Range 36 [document, 1, document, 2] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 36 [document, 1, document, 2] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 36 [document, 1, document, 2] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 36 [document, 1, document, 2] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 36 [document, 1, document, 2] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 36 [document, 1, document, 2] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 3 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 36 [document, 1, document, 2] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 36 [document, 1, document, 2] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 36 [document, 1, document, 2] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 36 [document, 1, document, 2] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must do nothing 
 PASS Range 36 [document, 1, document, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 36 [document, 1, document, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in rangeCount being 1 
 PASS Range 36 [document, 1, document, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 36 [document, 1, document, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 36 [document, 1, document, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the first added range must modify the Selection's last Range 
 PASS Range 36 [document, 1, document, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 36 [document, 1, document, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 36 [document, 1, document, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in rangeCount being 1 
-FAIL Range 36 [document, 1, document, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 3 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 36 [document, 1, document, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "EfghijklMnopqrstI admit that I harbor doubts about whether we really need so many things to test, but it's too late to stop now." but got object ""
-FAIL Range 36 [document, 1, document, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 36 [document, 1, document, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 36 [document, 1, document, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must do nothing 
 PASS Range 36 [document, 1, document, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 36 [document, 1, document, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in rangeCount being 1 
 PASS Range 36 [document, 1, document, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 36 [document, 1, document, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 36 [document, 1, document, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the first added range must modify the Selection's last Range 
 PASS Range 36 [document, 1, document, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 36 [document, 1, document, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 36 [document, 1, document, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in rangeCount being 1 
-FAIL Range 36 [document, 1, document, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <body><p>Efghijkl</p><p>Mnopqrst</p>I admit that I harbor... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 36 [document, 1, document, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "EfghijklMnopqrstI admit that I harbor doubts about w" but got object ""
-FAIL Range 36 [document, 1, document, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 36 [document, 1, document, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 36 [document, 1, document, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must do nothing 
 PASS Range 36 [document, 1, document, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 36 [document, 1, document, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 36 [document, 1, document, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 36 [document, 1, document, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 36 [document, 1, document, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 36 [document, 1, document, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 36 [document, 1, document, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 36 [document, 1, document, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 36 [document, 1, document, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 4 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 36 [document, 1, document, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 36 [document, 1, document, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 36 [document, 1, document, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 36 [document, 1, document, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must do nothing 
 PASS Range 36 [document, 1, document, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 36 [document, 1, document, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 36 [document, 1, document, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 36 [document, 1, document, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 36 [document, 1, document, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 36 [document, 1, document, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 36 [document, 1, document, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 36 [document, 1, document, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 36 [document, 1, document, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 4 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 36 [document, 1, document, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "do re mi fa so la ti" but got object ""
-FAIL Range 36 [document, 1, document, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 36 [document, 1, document, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 36 [document, 1, document, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must do nothing 
 PASS Range 36 [document, 1, document, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 36 [document, 1, document, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 36 [document, 1, document, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 36 [document, 1, document, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 36 [document, 1, document, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 36 [document, 1, document, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 36 [document, 1, document, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 36 [document, 1, document, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 36 [document, 1, document, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Uvwxyzab" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 36 [document, 1, document, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Uvwxyzab" but got object ""
-FAIL Range 36 [document, 1, document, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 36 [document, 1, document, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 36 [document, 1, document, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must do nothing 
 PASS Range 36 [document, 1, document, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 36 [document, 1, document, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in rangeCount being 1 
 PASS Range 36 [document, 1, document, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 36 [document, 1, document, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 36 [document, 1, document, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the first added range must modify the Selection's last Range 
 PASS Range 36 [document, 1, document, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 36 [document, 1, document, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 36 [document, 1, document, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in rangeCount being 1 
-FAIL Range 36 [document, 1, document, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Cdefghij" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 36 [document, 1, document, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 36 [document, 1, document, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 36 [document, 1, document, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 36 [document, 1, document, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must do nothing 
 PASS Range 36 [document, 1, document, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 36 [document, 1, document, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 36 [document, 1, document, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 36 [document, 1, document, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 36 [document, 1, document, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 36 [document, 1, document, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 36 [document, 1, document, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 36 [document, 1, document, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 36 [document, 1, document, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Cdefghij" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 36 [document, 1, document, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Cdefghij" but got object ""
-FAIL Range 36 [document, 1, document, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 36 [document, 1, document, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 36 [document, 1, document, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must do nothing 
 PASS Range 36 [document, 1, document, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 36 [document, 1, document, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in rangeCount being 1 
 PASS Range 36 [document, 1, document, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 36 [document, 1, document, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 36 [document, 1, document, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the first added range must modify the Selection's last Range 
 PASS Range 36 [document, 1, document, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 36 [document, 1, document, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 36 [document, 1, document, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in rangeCount being 1 
-FAIL Range 36 [document, 1, document, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Klmnopqr" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 36 [document, 1, document, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 36 [document, 1, document, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 36 [document, 1, document, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 36 [document, 1, document, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must do nothing 
 PASS Range 36 [document, 1, document, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 36 [document, 1, document, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 36 [document, 1, document, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 36 [document, 1, document, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 36 [document, 1, document, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 36 [document, 1, document, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 36 [document, 1, document, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 36 [document, 1, document, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 36 [document, 1, document, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Klmnopqr" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 36 [document, 1, document, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Klmnopqr" but got object ""
-FAIL Range 36 [document, 1, document, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 36 [document, 1, document, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 36 [document, 1, document, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must do nothing 
 PASS Range 36 [document, 1, document, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 36 [document, 1, document, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in rangeCount being 1 
 PASS Range 36 [document, 1, document, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 36 [document, 1, document, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 36 [document, 1, document, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the first added range must modify the Selection's last Range 
 PASS Range 36 [document, 1, document, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 36 [document, 1, document, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 36 [document, 1, document, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in rangeCount being 1 
-FAIL Range 36 [document, 1, document, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--Stuvwxyz--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 36 [document, 1, document, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 36 [document, 1, document, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 36 [document, 1, document, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 36 [document, 1, document, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must do nothing 
 PASS Range 36 [document, 1, document, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 36 [document, 1, document, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in rangeCount being 1 
 PASS Range 36 [document, 1, document, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 36 [document, 1, document, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 36 [document, 1, document, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the first added range must modify the Selection's last Range 
 PASS Range 36 [document, 1, document, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 36 [document, 1, document, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 36 [document, 1, document, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in rangeCount being 1 
-FAIL Range 36 [document, 1, document, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--Stuvwxyz--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 36 [document, 1, document, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 36 [document, 1, document, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 36 [document, 1, document, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 36 [document, 1, document, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must do nothing 
 PASS Range 36 [document, 1, document, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 36 [document, 1, document, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 36 [document, 1, document, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 36 [document, 1, document, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 36 [document, 1, document, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 36 [document, 1, document, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 36 [document, 1, document, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 36 [document, 1, document, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 36 [document, 1, document, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--אריה יהודה--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 36 [document, 1, document, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 36 [document, 1, document, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 36 [document, 1, document, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 36 [document, 1, document, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must do nothing 
 PASS Range 36 [document, 1, document, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 36 [document, 1, document, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in rangeCount being 1 
 PASS Range 36 [document, 1, document, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 36 [document, 1, document, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 36 [document, 1, document, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the first added range must modify the Selection's last Range 
 PASS Range 36 [document, 1, document, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 36 [document, 1, document, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 36 [document, 1, document, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in rangeCount being 1 
-FAIL Range 36 [document, 1, document, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--אריה יהודה--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 36 [document, 1, document, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 36 [document, 1, document, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 36 [document, 1, document, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 36 [document, 1, document, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must do nothing 
 PASS Range 36 [document, 1, document, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 36 [document, 1, document, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in rangeCount being 1 
 PASS Range 36 [document, 1, document, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 36 [document, 1, document, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 36 [document, 1, document, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the first added range must modify the Selection's last Range 
 PASS Range 36 [document, 1, document, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 36 [document, 1, document, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 36 [document, 1, document, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in rangeCount being 1 
-FAIL Range 36 [document, 1, document, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--בן חיים אליעזר--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 36 [document, 1, document, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 36 [document, 1, document, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 36 [document, 1, document, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 36 [document, 1, document, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must do nothing 
 PASS Range 36 [document, 1, document, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 36 [document, 1, document, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 36 [document, 1, document, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 36 [document, 1, document, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 36 [document, 1, document, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 36 [document, 1, document, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 36 [document, 1, document, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 36 [document, 1, document, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 36 [document, 1, document, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 36 [document, 1, document, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 36 [document, 1, document, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 36 [document, 1, document, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 36 [document, 1, document, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must do nothing 
 PASS Range 36 [document, 1, document, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 36 [document, 1, document, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 36 [document, 1, document, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 36 [document, 1, document, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 36 [document, 1, document, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 36 [document, 1, document, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 36 [document, 1, document, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 36 [document, 1, document, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 36 [document, 1, document, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 36 [document, 1, document, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 36 [document, 1, document, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 36 [document, 1, document, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 36 [document, 1, document, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must do nothing 
 PASS Range 36 [document, 1, document, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 36 [document, 1, document, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 36 [document, 1, document, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 36 [document, 1, document, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 36 [document, 1, document, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 36 [document, 1, document, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 36 [document, 1, document, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 36 [document, 1, document, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 36 [document, 1, document, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 36 [document, 1, document, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 36 [document, 1, document, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 36 [document, 1, document, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 36 [document, 1, document, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must do nothing 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -1106,78 +926,42 @@
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 37 [testDiv, 0, comment, 5] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must do nothing 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "O" but got object ""
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 37 [testDiv, 0, comment, 5] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must do nothing 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "qrstuv" but got object ""
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 37 [testDiv, 0, comment, 5] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must do nothing 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 37 [testDiv, 0, comment, 5] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must do nothing 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "E" but got object ""
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 37 [testDiv, 0, comment, 5] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must do nothing 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "ghijkl" but got object ""
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 37 [testDiv, 0, comment, 5] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must do nothing 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -1312,39 +1096,21 @@
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title></title></head><body><p>Efghijkl</p><p... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 37 [testDiv, 0, comment, 5] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must do nothing 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <head><title></title></head> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 37 [testDiv, 0, comment, 5] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must do nothing 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <body><p>Efghijkl</p><p>Mnopqrst</p>I admit that I harbor... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 37 [testDiv, 0, comment, 5] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must do nothing 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in rangeCount being 1 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -1381,26 +1147,14 @@
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <p>Opqrstuv</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 37 [testDiv, 0, comment, 5] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must do nothing 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <p>Opqrstuv</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Opqrstuv" but got object ""
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 37 [testDiv, 0, comment, 5] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must do nothing 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -1512,13 +1266,7 @@
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title></title></head><body><p>Efghijkl</p><p... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 37 [testDiv, 0, comment, 5] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must do nothing 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 34 [document, 0, document, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 34 [document, 0, document, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -1665,234 +1413,126 @@
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 3 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 37 [testDiv, 0, comment, 5] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must do nothing 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in rangeCount being 1 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the first added range must modify the Selection's last Range 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in rangeCount being 1 
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 3 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "EfghijklMnopqrstI admit that I harbor doubts about whether we really need so many things to test, but it's too late to stop now." but got object ""
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 37 [testDiv, 0, comment, 5] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must do nothing 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in rangeCount being 1 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the first added range must modify the Selection's last Range 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in rangeCount being 1 
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <body><p>Efghijkl</p><p>Mnopqrst</p>I admit that I harbor... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "EfghijklMnopqrstI admit that I harbor doubts about w" but got object ""
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 37 [testDiv, 0, comment, 5] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must do nothing 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 4 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 37 [testDiv, 0, comment, 5] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must do nothing 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 4 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "do re mi fa so la ti" but got object ""
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 37 [testDiv, 0, comment, 5] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must do nothing 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Uvwxyzab" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Uvwxyzab" but got object ""
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 37 [testDiv, 0, comment, 5] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must do nothing 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in rangeCount being 1 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the first added range must modify the Selection's last Range 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in rangeCount being 1 
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Cdefghij" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 37 [testDiv, 0, comment, 5] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must do nothing 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Cdefghij" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Cdefghij" but got object ""
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 37 [testDiv, 0, comment, 5] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must do nothing 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in rangeCount being 1 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the first added range must modify the Selection's last Range 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in rangeCount being 1 
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Klmnopqr" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 37 [testDiv, 0, comment, 5] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must do nothing 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Klmnopqr" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Klmnopqr" but got object ""
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 37 [testDiv, 0, comment, 5] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must do nothing 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in rangeCount being 1 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the first added range must modify the Selection's last Range 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in rangeCount being 1 
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--Stuvwxyz--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 37 [testDiv, 0, comment, 5] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must do nothing 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in rangeCount being 1 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the first added range must modify the Selection's last Range 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in rangeCount being 1 
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--Stuvwxyz--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 37 [testDiv, 0, comment, 5] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must do nothing 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--אריה יהודה--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 37 [testDiv, 0, comment, 5] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must do nothing 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in rangeCount being 1 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the first added range must modify the Selection's last Range 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in rangeCount being 1 
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--אריה יהודה--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 37 [testDiv, 0, comment, 5] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must do nothing 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in rangeCount being 1 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the first added range must modify the Selection's last Range 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in rangeCount being 1 
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--בן חיים אליעזר--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 37 [testDiv, 0, comment, 5] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must do nothing 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 37 [testDiv, 0, comment, 5] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must do nothing 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 37 [testDiv, 0, comment, 5] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must do nothing 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 37 [testDiv, 0, comment, 5] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must do nothing 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -2004,78 +1644,42 @@
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must do nothing 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "O" but got object ""
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must do nothing 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "qrstuv" but got object ""
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must do nothing 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must do nothing 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "E" but got object ""
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must do nothing 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "ghijkl" but got object ""
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must do nothing 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -2210,39 +1814,21 @@
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title></title></head><body><p>Efghijkl</p><p... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must do nothing 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <head><title></title></head> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must do nothing 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <body><p>Efghijkl</p><p>Mnopqrst</p>I admit that I harbor... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must do nothing 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in rangeCount being 1 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -2279,26 +1865,14 @@
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <p>Opqrstuv</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must do nothing 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <p>Opqrstuv</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Opqrstuv" but got object ""
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must do nothing 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -2410,13 +1984,7 @@
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title></title></head><body><p>Efghijkl</p><p... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must do nothing 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 34 [document, 0, document, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 34 [document, 0, document, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -2563,234 +2131,126 @@
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 3 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must do nothing 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in rangeCount being 1 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the first added range must modify the Selection's last Range 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in rangeCount being 1 
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 3 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "EfghijklMnopqrstI admit that I harbor doubts about whether we really need so many things to test, but it's too late to stop now." but got object ""
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must do nothing 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in rangeCount being 1 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the first added range must modify the Selection's last Range 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in rangeCount being 1 
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <body><p>Efghijkl</p><p>Mnopqrst</p>I admit that I harbor... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "EfghijklMnopqrstI admit that I harbor doubts about w" but got object ""
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must do nothing 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 4 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must do nothing 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 4 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "do re mi fa so la ti" but got object ""
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must do nothing 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Uvwxyzab" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Uvwxyzab" but got object ""
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must do nothing 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in rangeCount being 1 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the first added range must modify the Selection's last Range 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in rangeCount being 1 
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Cdefghij" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must do nothing 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Cdefghij" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Cdefghij" but got object ""
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must do nothing 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in rangeCount being 1 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the first added range must modify the Selection's last Range 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in rangeCount being 1 
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Klmnopqr" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must do nothing 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Klmnopqr" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Klmnopqr" but got object ""
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must do nothing 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in rangeCount being 1 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the first added range must modify the Selection's last Range 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in rangeCount being 1 
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--Stuvwxyz--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must do nothing 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in rangeCount being 1 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the first added range must modify the Selection's last Range 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in rangeCount being 1 
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--Stuvwxyz--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must do nothing 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--אריה יהודה--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must do nothing 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in rangeCount being 1 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the first added range must modify the Selection's last Range 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in rangeCount being 1 
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--אריה יהודה--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must do nothing 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in rangeCount being 1 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the first added range must modify the Selection's last Range 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in rangeCount being 1 
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--בן חיים אליעזר--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must do nothing 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must do nothing 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must do nothing 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must do nothing 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -2902,78 +2362,42 @@
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 39 [paras[3], 1, comment, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must do nothing 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "O" but got object ""
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 39 [paras[3], 1, comment, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must do nothing 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Opqrstuv" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "qrstuv" but got object ""
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 39 [paras[3], 1, comment, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must do nothing 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 39 [paras[3], 1, comment, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must do nothing 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "E" but got object ""
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 39 [paras[3], 1, comment, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must do nothing 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Efghijkl" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "ghijkl" but got object ""
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 39 [paras[3], 1, comment, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must do nothing 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -3108,39 +2532,21 @@
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title></title></head><body><p>Efghijkl</p><p... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 39 [paras[3], 1, comment, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must do nothing 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <head><title></title></head> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 39 [paras[3], 1, comment, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must do nothing 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <body><p>Efghijkl</p><p>Mnopqrst</p>I admit that I harbor... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 39 [paras[3], 1, comment, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must do nothing 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in rangeCount being 1 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -3177,26 +2583,14 @@
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <p>Opqrstuv</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 39 [paras[3], 1, comment, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must do nothing 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <p>Opqrstuv</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Opqrstuv" but got object ""
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 39 [paras[3], 1, comment, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must do nothing 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -3308,13 +2702,7 @@
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title></title></head><body><p>Efghijkl</p><p... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 39 [paras[3], 1, comment, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must do nothing 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 34 [document, 0, document, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 34 [document, 0, document, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range having the specified endpoints 
@@ -3461,233 +2849,125 @@
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 3 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 39 [paras[3], 1, comment, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must do nothing 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in rangeCount being 1 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the first added range must modify the Selection's last Range 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in rangeCount being 1 
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 3 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "EfghijklMnopqrstI admit that I harbor doubts about whether we really need so many things to test, but it's too late to stop now." but got object ""
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 39 [paras[3], 1, comment, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must do nothing 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in rangeCount being 1 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the first added range must modify the Selection's last Range 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in rangeCount being 1 
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <body><p>Efghijkl</p><p>Mnopqrst</p>I admit that I harbor... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "EfghijklMnopqrstI admit that I harbor doubts about w" but got object ""
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 39 [paras[3], 1, comment, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must do nothing 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 4 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 39 [paras[3], 1, comment, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must do nothing 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Document node with 4 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "do re mi fa so la ti" but got object ""
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 39 [paras[3], 1, comment, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must do nothing 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Uvwxyzab" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Uvwxyzab" but got object ""
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 39 [paras[3], 1, comment, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must do nothing 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in rangeCount being 1 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the first added range must modify the Selection's last Range 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in rangeCount being 1 
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Cdefghij" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 39 [paras[3], 1, comment, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must do nothing 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Cdefghij" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Cdefghij" but got object ""
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 39 [paras[3], 1, comment, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must do nothing 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in rangeCount being 1 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the first added range must modify the Selection's last Range 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in rangeCount being 1 
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Klmnopqr" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 39 [paras[3], 1, comment, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must do nothing 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in rangeCount being 1 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the first added range must modify the Selection's last Range 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in rangeCount being 1 
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Text node "Klmnopqr" but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Klmnopqr" but got object ""
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 39 [paras[3], 1, comment, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must do nothing 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in rangeCount being 1 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the first added range must modify the Selection's last Range 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in rangeCount being 1 
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--Stuvwxyz--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 39 [paras[3], 1, comment, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must do nothing 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in rangeCount being 1 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the first added range must modify the Selection's last Range 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in rangeCount being 1 
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--Stuvwxyz--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 39 [paras[3], 1, comment, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must do nothing 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in rangeCount being 1 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the first added range must modify the Selection's last Range 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in rangeCount being 1 
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--אריה יהודה--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 39 [paras[3], 1, comment, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must do nothing 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in rangeCount being 1 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the first added range must modify the Selection's last Range 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in rangeCount being 1 
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--אריה יהודה--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 39 [paras[3], 1, comment, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must do nothing 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in rangeCount being 1 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the first added range must modify the Selection's last Range 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in rangeCount being 1 
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Comment node <!--בן חיים אליעזר--> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 39 [paras[3], 1, comment, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must do nothing 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 39 [paras[3], 1, comment, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must do nothing 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 39 [paras[3], 1, comment, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must do nothing 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the first added range must modify the Selection's last Range 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the first added Range 
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in rangeCount being 1 
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected DocumentFragment node with 0 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "" but got object ""
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
+PASS Range 39 [paras[3], 1, comment, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must do nothing 
 Harness: the test ran to completion.
 
diff --git a/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-40-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-40-expected.txt
deleted file mode 100644
index 12f3c97..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-40-expected.txt
+++ /dev/null
@@ -1,2824 +0,0 @@
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-This is a testharness.js-based test.
-Found 2784 tests; 1024 PASS, 1760 FAIL, 0 TIMEOUT, 0 NOTRUN.
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in rangeCount being 1 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the second added range must modify the Selection's last Range 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in rangeCount being 1 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the second added range must modify the Selection's last Range 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 17 [document.head, 1, document.head, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 17 [document.head, 1, document.head, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 17 [document.head, 1, document.head, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 17 [document.head, 1, document.head, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 18 [document.body, 0, document.body, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 18 [document.body, 0, document.body, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in rangeCount being 1 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in rangeCount being 1 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the second added range must modify the Selection's last Range 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in rangeCount being 1 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the second added range must modify the Selection's last Range 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 34 [document, 0, document, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 34 [document, 0, document, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 34 [document, 0, document, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 34 [document, 0, document, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 34 [document, 0, document, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 34 [document, 0, document, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 34 [document, 0, document, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 34 [document, 0, document, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 34 [document, 0, document, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 34 [document, 0, document, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 35 [document, 0, document, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 35 [document, 0, document, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 35 [document, 0, document, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 35 [document, 0, document, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 35 [document, 0, document, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 35 [document, 0, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 35 [document, 0, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 35 [document, 0, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 35 [document, 0, document, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 35 [document, 0, document, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 36 [document, 1, document, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 36 [document, 1, document, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 36 [document, 1, document, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 36 [document, 1, document, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 36 [document, 1, document, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 36 [document, 1, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 36 [document, 1, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 36 [document, 1, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 36 [document, 1, document, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 36 [document, 1, document, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 37 [testDiv, 0, comment, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in rangeCount being 1 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 37 [testDiv, 0, comment, 5]: modifying the second added range must modify the Selection's last Range 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 39 [paras[3], 1, comment, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 39 [paras[3], 1, comment, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 39 [paras[3], 1, comment, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 39 [paras[3], 1, comment, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 40 [foreignDoc, 0, foreignDoc, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in rangeCount being 1 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the second added range must modify the Selection's last Range 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in rangeCount being 1 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the second added range must modify the Selection's last Range 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 17 [document.head, 1, document.head, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 17 [document.head, 1, document.head, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 17 [document.head, 1, document.head, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 17 [document.head, 1, document.head, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 18 [document.body, 0, document.body, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 18 [document.body, 0, document.body, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in rangeCount being 1 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in rangeCount being 1 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the second added range must modify the Selection's last Range 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in rangeCount being 1 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the second added range must modify the Selection's last Range 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 34 [document, 0, document, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 34 [document, 0, document, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 34 [document, 0, document, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 34 [document, 0, document, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 34 [document, 0, document, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 34 [document, 0, document, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 34 [document, 0, document, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 34 [document, 0, document, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 34 [document, 0, document, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 34 [document, 0, document, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 35 [document, 0, document, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 35 [document, 0, document, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 35 [document, 0, document, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 35 [document, 0, document, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 35 [document, 0, document, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 35 [document, 0, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 35 [document, 0, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 35 [document, 0, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 35 [document, 0, document, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 35 [document, 0, document, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 36 [document, 1, document, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 36 [document, 1, document, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 36 [document, 1, document, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 36 [document, 1, document, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 36 [document, 1, document, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 36 [document, 1, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 36 [document, 1, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 36 [document, 1, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 36 [document, 1, document, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 36 [document, 1, document, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 37 [testDiv, 0, comment, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in rangeCount being 1 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 37 [testDiv, 0, comment, 5]: modifying the second added range must modify the Selection's last Range 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 39 [paras[3], 1, comment, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 39 [paras[3], 1, comment, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 39 [paras[3], 1, comment, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 39 [paras[3], 1, comment, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 41 [foreignDoc, 1, foreignComment, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in rangeCount being 1 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the second added range must modify the Selection's last Range 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in rangeCount being 1 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the second added range must modify the Selection's last Range 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 17 [document.head, 1, document.head, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 17 [document.head, 1, document.head, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 17 [document.head, 1, document.head, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 17 [document.head, 1, document.head, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 18 [document.body, 0, document.body, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 18 [document.body, 0, document.body, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in rangeCount being 1 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in rangeCount being 1 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the second added range must modify the Selection's last Range 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in rangeCount being 1 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the second added range must modify the Selection's last Range 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 34 [document, 0, document, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 34 [document, 0, document, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 34 [document, 0, document, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 34 [document, 0, document, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 34 [document, 0, document, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 34 [document, 0, document, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 34 [document, 0, document, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 34 [document, 0, document, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 34 [document, 0, document, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 34 [document, 0, document, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 35 [document, 0, document, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 35 [document, 0, document, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 35 [document, 0, document, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 35 [document, 0, document, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 35 [document, 0, document, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 35 [document, 0, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 35 [document, 0, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 35 [document, 0, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 35 [document, 0, document, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 35 [document, 0, document, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 36 [document, 1, document, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 36 [document, 1, document, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 36 [document, 1, document, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 36 [document, 1, document, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 36 [document, 1, document, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 36 [document, 1, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 36 [document, 1, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 36 [document, 1, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 36 [document, 1, document, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 36 [document, 1, document, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 37 [testDiv, 0, comment, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in rangeCount being 1 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 37 [testDiv, 0, comment, 5]: modifying the second added range must modify the Selection's last Range 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 39 [paras[3], 1, comment, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 39 [paras[3], 1, comment, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 39 [paras[3], 1, comment, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 39 [paras[3], 1, comment, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 42 [foreignDoc.body, 0, foreignTextNode, 36] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in rangeCount being 1 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the second added range must modify the Selection's last Range 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in rangeCount being 1 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the second added range must modify the Selection's last Range 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 17 [document.head, 1, document.head, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 17 [document.head, 1, document.head, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 17 [document.head, 1, document.head, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 17 [document.head, 1, document.head, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 18 [document.body, 0, document.body, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 18 [document.body, 0, document.body, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in rangeCount being 1 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in rangeCount being 1 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the second added range must modify the Selection's last Range 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in rangeCount being 1 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the second added range must modify the Selection's last Range 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 34 [document, 0, document, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 34 [document, 0, document, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 34 [document, 0, document, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 34 [document, 0, document, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 34 [document, 0, document, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 34 [document, 0, document, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 34 [document, 0, document, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 34 [document, 0, document, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 34 [document, 0, document, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 34 [document, 0, document, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 35 [document, 0, document, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 35 [document, 0, document, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 35 [document, 0, document, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 35 [document, 0, document, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 35 [document, 0, document, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 35 [document, 0, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 35 [document, 0, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 35 [document, 0, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 35 [document, 0, document, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 35 [document, 0, document, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 36 [document, 1, document, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 36 [document, 1, document, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 36 [document, 1, document, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 36 [document, 1, document, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 36 [document, 1, document, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 36 [document, 1, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 36 [document, 1, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 36 [document, 1, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 36 [document, 1, document, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 36 [document, 1, document, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 37 [testDiv, 0, comment, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in rangeCount being 1 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 37 [testDiv, 0, comment, 5]: modifying the second added range must modify the Selection's last Range 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 39 [paras[3], 1, comment, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 39 [paras[3], 1, comment, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 39 [paras[3], 1, comment, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 39 [paras[3], 1, comment, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 43 [xmlDoc, 0, xmlDoc, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-44-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-44-expected.txt
deleted file mode 100644
index fc3213e..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-44-expected.txt
+++ /dev/null
@@ -1,2882 +0,0 @@
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-This is a testharness.js-based test.
-Found 2784 tests; 1024 PASS, 1760 FAIL, 0 TIMEOUT, 0 NOTRUN.
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in rangeCount being 1 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the second added range must modify the Selection's last Range 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in rangeCount being 1 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the second added range must modify the Selection's last Range 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 17 [document.head, 1, document.head, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 17 [document.head, 1, document.head, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 17 [document.head, 1, document.head, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 17 [document.head, 1, document.head, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 18 [document.body, 0, document.body, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 18 [document.body, 0, document.body, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in rangeCount being 1 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in rangeCount being 1 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the second added range must modify the Selection's last Range 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in rangeCount being 1 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the second added range must modify the Selection's last Range 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 34 [document, 0, document, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 34 [document, 0, document, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 34 [document, 0, document, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 34 [document, 0, document, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 34 [document, 0, document, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 34 [document, 0, document, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 34 [document, 0, document, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 34 [document, 0, document, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 34 [document, 0, document, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 34 [document, 0, document, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 35 [document, 0, document, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 35 [document, 0, document, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 35 [document, 0, document, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 35 [document, 0, document, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 35 [document, 0, document, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 35 [document, 0, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 35 [document, 0, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 35 [document, 0, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 35 [document, 0, document, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 35 [document, 0, document, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 36 [document, 1, document, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 36 [document, 1, document, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 36 [document, 1, document, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 36 [document, 1, document, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 36 [document, 1, document, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 36 [document, 1, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 36 [document, 1, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 36 [document, 1, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 36 [document, 1, document, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 36 [document, 1, document, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 37 [testDiv, 0, comment, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in rangeCount being 1 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 37 [testDiv, 0, comment, 5]: modifying the second added range must modify the Selection's last Range 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 39 [paras[3], 1, comment, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 39 [paras[3], 1, comment, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 39 [paras[3], 1, comment, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 39 [paras[3], 1, comment, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 44 [xmlDoc, 1, xmlComment, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in rangeCount being 1 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the second added range must modify the Selection's last Range 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in rangeCount being 1 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the second added range must modify the Selection's last Range 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 17 [document.head, 1, document.head, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 17 [document.head, 1, document.head, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 17 [document.head, 1, document.head, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 17 [document.head, 1, document.head, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 18 [document.body, 0, document.body, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 18 [document.body, 0, document.body, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in rangeCount being 1 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in rangeCount being 1 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the second added range must modify the Selection's last Range 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in rangeCount being 1 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the second added range must modify the Selection's last Range 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 34 [document, 0, document, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 34 [document, 0, document, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 34 [document, 0, document, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 34 [document, 0, document, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 34 [document, 0, document, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 34 [document, 0, document, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 34 [document, 0, document, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 34 [document, 0, document, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 34 [document, 0, document, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 34 [document, 0, document, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 35 [document, 0, document, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 35 [document, 0, document, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 35 [document, 0, document, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 35 [document, 0, document, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 35 [document, 0, document, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 35 [document, 0, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 35 [document, 0, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 35 [document, 0, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 35 [document, 0, document, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 35 [document, 0, document, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 36 [document, 1, document, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 36 [document, 1, document, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 36 [document, 1, document, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 36 [document, 1, document, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 36 [document, 1, document, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 36 [document, 1, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 36 [document, 1, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 36 [document, 1, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 36 [document, 1, document, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 36 [document, 1, document, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 37 [testDiv, 0, comment, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in rangeCount being 1 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 37 [testDiv, 0, comment, 5]: modifying the second added range must modify the Selection's last Range 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 39 [paras[3], 1, comment, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 39 [paras[3], 1, comment, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 39 [paras[3], 1, comment, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 39 [paras[3], 1, comment, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 45 [detachedTextNode, 0, detachedTextNode, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in rangeCount being 1 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the second added range must modify the Selection's last Range 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in rangeCount being 1 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the second added range must modify the Selection's last Range 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 17 [document.head, 1, document.head, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 17 [document.head, 1, document.head, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 17 [document.head, 1, document.head, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 17 [document.head, 1, document.head, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 18 [document.body, 0, document.body, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 18 [document.body, 0, document.body, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in rangeCount being 1 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in rangeCount being 1 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the second added range must modify the Selection's last Range 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in rangeCount being 1 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the second added range must modify the Selection's last Range 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 34 [document, 0, document, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 34 [document, 0, document, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 34 [document, 0, document, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 34 [document, 0, document, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 34 [document, 0, document, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 34 [document, 0, document, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 34 [document, 0, document, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 34 [document, 0, document, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 34 [document, 0, document, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 34 [document, 0, document, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 35 [document, 0, document, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 35 [document, 0, document, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 35 [document, 0, document, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 35 [document, 0, document, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 35 [document, 0, document, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 35 [document, 0, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 35 [document, 0, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 35 [document, 0, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 35 [document, 0, document, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 35 [document, 0, document, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 36 [document, 1, document, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 36 [document, 1, document, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 36 [document, 1, document, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 36 [document, 1, document, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 36 [document, 1, document, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 36 [document, 1, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 36 [document, 1, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 36 [document, 1, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 36 [document, 1, document, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 36 [document, 1, document, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 37 [testDiv, 0, comment, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in rangeCount being 1 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 37 [testDiv, 0, comment, 5]: modifying the second added range must modify the Selection's last Range 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 39 [paras[3], 1, comment, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 39 [paras[3], 1, comment, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 39 [paras[3], 1, comment, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 39 [paras[3], 1, comment, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in rangeCount being 1 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the second added range must modify the Selection's last Range 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in rangeCount being 1 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the second added range must modify the Selection's last Range 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 17 [document.head, 1, document.head, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 17 [document.head, 1, document.head, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 17 [document.head, 1, document.head, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 17 [document.head, 1, document.head, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 18 [document.body, 0, document.body, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 18 [document.body, 0, document.body, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in rangeCount being 1 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in rangeCount being 1 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the second added range must modify the Selection's last Range 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in rangeCount being 1 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the second added range must modify the Selection's last Range 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 34 [document, 0, document, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 34 [document, 0, document, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 34 [document, 0, document, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 34 [document, 0, document, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 34 [document, 0, document, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 34 [document, 0, document, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 34 [document, 0, document, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 34 [document, 0, document, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 34 [document, 0, document, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 34 [document, 0, document, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 35 [document, 0, document, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 35 [document, 0, document, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 35 [document, 0, document, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 35 [document, 0, document, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 35 [document, 0, document, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 35 [document, 0, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 35 [document, 0, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 35 [document, 0, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 35 [document, 0, document, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 35 [document, 0, document, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 36 [document, 1, document, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 36 [document, 1, document, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 36 [document, 1, document, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 36 [document, 1, document, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 36 [document, 1, document, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 36 [document, 1, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 36 [document, 1, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 36 [document, 1, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 36 [document, 1, document, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 36 [document, 1, document, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 37 [testDiv, 0, comment, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in rangeCount being 1 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 37 [testDiv, 0, comment, 5]: modifying the second added range must modify the Selection's last Range 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 39 [paras[3], 1, comment, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 39 [paras[3], 1, comment, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 39 [paras[3], 1, comment, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 39 [paras[3], 1, comment, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-48-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-48-expected.txt
deleted file mode 100644
index 98770f4..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-48-expected.txt
+++ /dev/null
@@ -1,2940 +0,0 @@
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-This is a testharness.js-based test.
-Found 2784 tests; 1024 PASS, 1760 FAIL, 0 TIMEOUT, 0 NOTRUN.
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in rangeCount being 1 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the second added range must modify the Selection's last Range 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in rangeCount being 1 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the second added range must modify the Selection's last Range 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 17 [document.head, 1, document.head, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 17 [document.head, 1, document.head, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 17 [document.head, 1, document.head, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 17 [document.head, 1, document.head, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 18 [document.body, 0, document.body, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 18 [document.body, 0, document.body, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in rangeCount being 1 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in rangeCount being 1 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the second added range must modify the Selection's last Range 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in rangeCount being 1 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the second added range must modify the Selection's last Range 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 34 [document, 0, document, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 34 [document, 0, document, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 34 [document, 0, document, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 34 [document, 0, document, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 34 [document, 0, document, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 34 [document, 0, document, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 34 [document, 0, document, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 34 [document, 0, document, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 34 [document, 0, document, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 34 [document, 0, document, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 35 [document, 0, document, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 35 [document, 0, document, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 35 [document, 0, document, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 35 [document, 0, document, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 35 [document, 0, document, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 35 [document, 0, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 35 [document, 0, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 35 [document, 0, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 35 [document, 0, document, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 35 [document, 0, document, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 36 [document, 1, document, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 36 [document, 1, document, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 36 [document, 1, document, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 36 [document, 1, document, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 36 [document, 1, document, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 36 [document, 1, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 36 [document, 1, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 36 [document, 1, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 36 [document, 1, document, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 36 [document, 1, document, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 37 [testDiv, 0, comment, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in rangeCount being 1 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 37 [testDiv, 0, comment, 5]: modifying the second added range must modify the Selection's last Range 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 39 [paras[3], 1, comment, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 39 [paras[3], 1, comment, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 39 [paras[3], 1, comment, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 39 [paras[3], 1, comment, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in rangeCount being 1 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the second added range must modify the Selection's last Range 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in rangeCount being 1 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the second added range must modify the Selection's last Range 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 17 [document.head, 1, document.head, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 17 [document.head, 1, document.head, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 17 [document.head, 1, document.head, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 17 [document.head, 1, document.head, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 18 [document.body, 0, document.body, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 18 [document.body, 0, document.body, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in rangeCount being 1 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in rangeCount being 1 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the second added range must modify the Selection's last Range 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in rangeCount being 1 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the second added range must modify the Selection's last Range 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 34 [document, 0, document, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 34 [document, 0, document, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 34 [document, 0, document, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 34 [document, 0, document, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 34 [document, 0, document, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 34 [document, 0, document, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 34 [document, 0, document, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 34 [document, 0, document, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 34 [document, 0, document, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 34 [document, 0, document, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 35 [document, 0, document, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 35 [document, 0, document, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 35 [document, 0, document, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 35 [document, 0, document, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 35 [document, 0, document, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 35 [document, 0, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 35 [document, 0, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 35 [document, 0, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 35 [document, 0, document, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 35 [document, 0, document, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 36 [document, 1, document, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 36 [document, 1, document, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 36 [document, 1, document, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 36 [document, 1, document, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 36 [document, 1, document, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 36 [document, 1, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 36 [document, 1, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 36 [document, 1, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 36 [document, 1, document, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 36 [document, 1, document, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 37 [testDiv, 0, comment, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in rangeCount being 1 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 37 [testDiv, 0, comment, 5]: modifying the second added range must modify the Selection's last Range 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 39 [paras[3], 1, comment, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 39 [paras[3], 1, comment, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 39 [paras[3], 1, comment, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 39 [paras[3], 1, comment, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in rangeCount being 1 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the second added range must modify the Selection's last Range 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in rangeCount being 1 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the second added range must modify the Selection's last Range 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 17 [document.head, 1, document.head, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 17 [document.head, 1, document.head, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 17 [document.head, 1, document.head, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 17 [document.head, 1, document.head, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 18 [document.body, 0, document.body, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 18 [document.body, 0, document.body, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in rangeCount being 1 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in rangeCount being 1 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the second added range must modify the Selection's last Range 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in rangeCount being 1 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the second added range must modify the Selection's last Range 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 34 [document, 0, document, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 34 [document, 0, document, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 34 [document, 0, document, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 34 [document, 0, document, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 34 [document, 0, document, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 34 [document, 0, document, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 34 [document, 0, document, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 34 [document, 0, document, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 34 [document, 0, document, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 34 [document, 0, document, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 35 [document, 0, document, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 35 [document, 0, document, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 35 [document, 0, document, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 35 [document, 0, document, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 35 [document, 0, document, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 35 [document, 0, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 35 [document, 0, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 35 [document, 0, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 35 [document, 0, document, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 35 [document, 0, document, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 36 [document, 1, document, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 36 [document, 1, document, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 36 [document, 1, document, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 36 [document, 1, document, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 36 [document, 1, document, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 36 [document, 1, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 36 [document, 1, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 36 [document, 1, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 36 [document, 1, document, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 36 [document, 1, document, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 37 [testDiv, 0, comment, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in rangeCount being 1 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 37 [testDiv, 0, comment, 5]: modifying the second added range must modify the Selection's last Range 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 39 [paras[3], 1, comment, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 39 [paras[3], 1, comment, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 39 [paras[3], 1, comment, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 39 [paras[3], 1, comment, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 50 [detachedComment, 3, detachedComment, 4] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in rangeCount being 1 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the second added range must modify the Selection's last Range 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in rangeCount being 1 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the second added range must modify the Selection's last Range 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 17 [document.head, 1, document.head, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 17 [document.head, 1, document.head, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 17 [document.head, 1, document.head, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 17 [document.head, 1, document.head, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 18 [document.body, 0, document.body, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 18 [document.body, 0, document.body, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in rangeCount being 1 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in rangeCount being 1 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the second added range must modify the Selection's last Range 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in rangeCount being 1 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the second added range must modify the Selection's last Range 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 34 [document, 0, document, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 34 [document, 0, document, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 34 [document, 0, document, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 34 [document, 0, document, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 34 [document, 0, document, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 34 [document, 0, document, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 34 [document, 0, document, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 34 [document, 0, document, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 34 [document, 0, document, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 34 [document, 0, document, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 35 [document, 0, document, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 35 [document, 0, document, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 35 [document, 0, document, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 35 [document, 0, document, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 35 [document, 0, document, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 35 [document, 0, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 35 [document, 0, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 35 [document, 0, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 35 [document, 0, document, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 35 [document, 0, document, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 36 [document, 1, document, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 36 [document, 1, document, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 36 [document, 1, document, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 36 [document, 1, document, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 36 [document, 1, document, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 36 [document, 1, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 36 [document, 1, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 36 [document, 1, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 36 [document, 1, document, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 36 [document, 1, document, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 37 [testDiv, 0, comment, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in rangeCount being 1 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 37 [testDiv, 0, comment, 5]: modifying the second added range must modify the Selection's last Range 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 39 [paras[3], 1, comment, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 39 [paras[3], 1, comment, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 39 [paras[3], 1, comment, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 39 [paras[3], 1, comment, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 51 [detachedComment, 5, detachedComment, 5] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-52-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-52-expected.txt
deleted file mode 100644
index 44159ac4..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-52-expected.txt
+++ /dev/null
@@ -1,2882 +0,0 @@
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-This is a testharness.js-based test.
-Found 2784 tests; 1024 PASS, 1760 FAIL, 0 TIMEOUT, 0 NOTRUN.
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in rangeCount being 1 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the second added range must modify the Selection's last Range 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in rangeCount being 1 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the second added range must modify the Selection's last Range 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 17 [document.head, 1, document.head, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 17 [document.head, 1, document.head, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 17 [document.head, 1, document.head, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 17 [document.head, 1, document.head, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 18 [document.body, 0, document.body, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 18 [document.body, 0, document.body, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in rangeCount being 1 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in rangeCount being 1 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the second added range must modify the Selection's last Range 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in rangeCount being 1 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the second added range must modify the Selection's last Range 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 34 [document, 0, document, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 34 [document, 0, document, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 34 [document, 0, document, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 34 [document, 0, document, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 34 [document, 0, document, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 34 [document, 0, document, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 34 [document, 0, document, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 34 [document, 0, document, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 34 [document, 0, document, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 34 [document, 0, document, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 35 [document, 0, document, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 35 [document, 0, document, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 35 [document, 0, document, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 35 [document, 0, document, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 35 [document, 0, document, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 35 [document, 0, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 35 [document, 0, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 35 [document, 0, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 35 [document, 0, document, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 35 [document, 0, document, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 36 [document, 1, document, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 36 [document, 1, document, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 36 [document, 1, document, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 36 [document, 1, document, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 36 [document, 1, document, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 36 [document, 1, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 36 [document, 1, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 36 [document, 1, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 36 [document, 1, document, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 36 [document, 1, document, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 37 [testDiv, 0, comment, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in rangeCount being 1 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 37 [testDiv, 0, comment, 5]: modifying the second added range must modify the Selection's last Range 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 39 [paras[3], 1, comment, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 39 [paras[3], 1, comment, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 39 [paras[3], 1, comment, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 39 [paras[3], 1, comment, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in rangeCount being 1 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the second added range must modify the Selection's last Range 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in rangeCount being 1 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the second added range must modify the Selection's last Range 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 17 [document.head, 1, document.head, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 17 [document.head, 1, document.head, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 17 [document.head, 1, document.head, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 17 [document.head, 1, document.head, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 18 [document.body, 0, document.body, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 18 [document.body, 0, document.body, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in rangeCount being 1 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in rangeCount being 1 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the second added range must modify the Selection's last Range 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in rangeCount being 1 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the second added range must modify the Selection's last Range 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 34 [document, 0, document, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 34 [document, 0, document, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 34 [document, 0, document, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 34 [document, 0, document, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 34 [document, 0, document, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 34 [document, 0, document, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 34 [document, 0, document, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 34 [document, 0, document, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 34 [document, 0, document, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 34 [document, 0, document, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 35 [document, 0, document, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 35 [document, 0, document, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 35 [document, 0, document, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 35 [document, 0, document, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 35 [document, 0, document, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 35 [document, 0, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 35 [document, 0, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 35 [document, 0, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 35 [document, 0, document, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 35 [document, 0, document, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 36 [document, 1, document, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 36 [document, 1, document, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 36 [document, 1, document, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 36 [document, 1, document, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 36 [document, 1, document, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 36 [document, 1, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 36 [document, 1, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 36 [document, 1, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 36 [document, 1, document, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 36 [document, 1, document, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 37 [testDiv, 0, comment, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in rangeCount being 1 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 37 [testDiv, 0, comment, 5]: modifying the second added range must modify the Selection's last Range 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 39 [paras[3], 1, comment, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 39 [paras[3], 1, comment, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 39 [paras[3], 1, comment, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 39 [paras[3], 1, comment, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in rangeCount being 1 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the second added range must modify the Selection's last Range 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in rangeCount being 1 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the second added range must modify the Selection's last Range 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 17 [document.head, 1, document.head, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 17 [document.head, 1, document.head, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 17 [document.head, 1, document.head, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 17 [document.head, 1, document.head, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 18 [document.body, 0, document.body, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 18 [document.body, 0, document.body, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in rangeCount being 1 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in rangeCount being 1 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the second added range must modify the Selection's last Range 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in rangeCount being 1 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the second added range must modify the Selection's last Range 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 34 [document, 0, document, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 34 [document, 0, document, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 34 [document, 0, document, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 34 [document, 0, document, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 34 [document, 0, document, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 34 [document, 0, document, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 34 [document, 0, document, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 34 [document, 0, document, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 34 [document, 0, document, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 34 [document, 0, document, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 35 [document, 0, document, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 35 [document, 0, document, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 35 [document, 0, document, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 35 [document, 0, document, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 35 [document, 0, document, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 35 [document, 0, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 35 [document, 0, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 35 [document, 0, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 35 [document, 0, document, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 35 [document, 0, document, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 36 [document, 1, document, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 36 [document, 1, document, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 36 [document, 1, document, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 36 [document, 1, document, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 36 [document, 1, document, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 36 [document, 1, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 36 [document, 1, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 36 [document, 1, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 36 [document, 1, document, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 36 [document, 1, document, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 37 [testDiv, 0, comment, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in rangeCount being 1 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 37 [testDiv, 0, comment, 5]: modifying the second added range must modify the Selection's last Range 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 39 [paras[3], 1, comment, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 39 [paras[3], 1, comment, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 39 [paras[3], 1, comment, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 39 [paras[3], 1, comment, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in rangeCount being 1 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the second added range must modify the Selection's last Range 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in rangeCount being 1 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the second added range must modify the Selection's last Range 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 17 [document.head, 1, document.head, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 17 [document.head, 1, document.head, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 17 [document.head, 1, document.head, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 17 [document.head, 1, document.head, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 18 [document.body, 0, document.body, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 18 [document.body, 0, document.body, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in rangeCount being 1 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in rangeCount being 1 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the second added range must modify the Selection's last Range 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in rangeCount being 1 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the second added range must modify the Selection's last Range 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 34 [document, 0, document, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 34 [document, 0, document, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 34 [document, 0, document, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 34 [document, 0, document, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 34 [document, 0, document, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 34 [document, 0, document, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 34 [document, 0, document, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 34 [document, 0, document, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 34 [document, 0, document, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 34 [document, 0, document, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 35 [document, 0, document, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 35 [document, 0, document, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 35 [document, 0, document, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 35 [document, 0, document, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 35 [document, 0, document, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 35 [document, 0, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 35 [document, 0, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 35 [document, 0, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 35 [document, 0, document, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 35 [document, 0, document, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 36 [document, 1, document, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 36 [document, 1, document, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 36 [document, 1, document, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 36 [document, 1, document, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 36 [document, 1, document, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 36 [document, 1, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 36 [document, 1, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 36 [document, 1, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 36 [document, 1, document, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 36 [document, 1, document, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 37 [testDiv, 0, comment, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in rangeCount being 1 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 37 [testDiv, 0, comment, 5]: modifying the second added range must modify the Selection's last Range 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 39 [paras[3], 1, comment, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 39 [paras[3], 1, comment, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 39 [paras[3], 1, comment, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 39 [paras[3], 1, comment, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 55 [docfrag, 0, docfrag, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 55 [docfrag, 0, docfrag, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-56-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-56-expected.txt
deleted file mode 100644
index 54381d8..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-56-expected.txt
+++ /dev/null
@@ -1,1414 +0,0 @@
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-CONSOLE ERROR: line 7: The given range isn't in document.
-This is a testharness.js-based test.
-Found 1392 tests; 512 PASS, 880 FAIL, 0 TIMEOUT, 0 NOTRUN.
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in rangeCount being 1 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the second added range must modify the Selection's last Range 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in rangeCount being 1 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the second added range must modify the Selection's last Range 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 17 [document.head, 1, document.head, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 17 [document.head, 1, document.head, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 17 [document.head, 1, document.head, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 17 [document.head, 1, document.head, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 18 [document.body, 0, document.body, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 18 [document.body, 0, document.body, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in rangeCount being 1 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in rangeCount being 1 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the second added range must modify the Selection's last Range 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in rangeCount being 1 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the second added range must modify the Selection's last Range 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 34 [document, 0, document, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 34 [document, 0, document, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 34 [document, 0, document, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 34 [document, 0, document, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 34 [document, 0, document, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 34 [document, 0, document, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 34 [document, 0, document, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 34 [document, 0, document, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 34 [document, 0, document, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 34 [document, 0, document, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 35 [document, 0, document, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 35 [document, 0, document, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 35 [document, 0, document, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 35 [document, 0, document, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 35 [document, 0, document, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 35 [document, 0, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 35 [document, 0, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 35 [document, 0, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 35 [document, 0, document, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 35 [document, 0, document, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 36 [document, 1, document, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 36 [document, 1, document, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 36 [document, 1, document, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 36 [document, 1, document, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 36 [document, 1, document, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 36 [document, 1, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 36 [document, 1, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 36 [document, 1, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 36 [document, 1, document, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 36 [document, 1, document, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 37 [testDiv, 0, comment, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in rangeCount being 1 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 37 [testDiv, 0, comment, 5]: modifying the second added range must modify the Selection's last Range 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 39 [paras[3], 1, comment, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 39 [paras[3], 1, comment, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 39 [paras[3], 1, comment, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 39 [paras[3], 1, comment, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in rangeCount being 1 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the second added range must modify the Selection's last Range 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in rangeCount being 1 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the second added range must modify the Selection's last Range 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 17 [document.head, 1, document.head, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 17 [document.head, 1, document.head, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 17 [document.head, 1, document.head, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 17 [document.head, 1, document.head, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 18 [document.body, 0, document.body, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 18 [document.body, 0, document.body, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in rangeCount being 1 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in rangeCount being 1 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the second added range must modify the Selection's last Range 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in rangeCount being 1 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the second added range must modify the Selection's last Range 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the second added range must modify the Selection's last Range 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 34 [document, 0, document, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 34 [document, 0, document, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 34 [document, 0, document, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 34 [document, 0, document, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 34 [document, 0, document, 1]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 34 [document, 0, document, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 34 [document, 0, document, 1]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 34 [document, 0, document, 1]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 34 [document, 0, document, 1]: modifying the second added range must modify the Selection's last Range 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 34 [document, 0, document, 1]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 35 [document, 0, document, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 35 [document, 0, document, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 35 [document, 0, document, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 35 [document, 0, document, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 35 [document, 0, document, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 35 [document, 0, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 35 [document, 0, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 35 [document, 0, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 35 [document, 0, document, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 35 [document, 0, document, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 36 [document, 1, document, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 36 [document, 1, document, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 36 [document, 1, document, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 36 [document, 1, document, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 36 [document, 1, document, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 36 [document, 1, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 36 [document, 1, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 36 [document, 1, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 36 [document, 1, document, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 36 [document, 1, document, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 37 [testDiv, 0, comment, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in rangeCount being 1 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 37 [testDiv, 0, comment, 5]: modifying the second added range must modify the Selection's last Range 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the second added range must modify the Selection's last Range 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 39 [paras[3], 1, comment, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 39 [paras[3], 1, comment, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must not throw exceptions or modify the range it's given 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must result in the selection's last range being the same object we added 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 39 [paras[3], 1, comment, 8]: modifying the second added range must modify the Selection's last Range 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 39 [paras[3], 1, comment, 8]: modifying the Selection's last Range must modify the second added Range 
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the first added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-PASS Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must not throw exceptions or modify the range it's given 
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in rangeCount being 1 assert_equals: rangeCount must be 1 expected 1 but got 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must result in the selection's last range being the same object we added assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the second added range must modify the Selection's last Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-FAIL Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the second added Range assert_not_equals: Cannot proceed with tests if rangeCount is 0 got disallowed value 0
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/selection/addRange.js b/third_party/WebKit/LayoutTests/external/wpt/selection/addRange.js
index 5b94f86d..855520e 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/selection/addRange.js
+++ b/third_party/WebKit/LayoutTests/external/wpt/selection/addRange.js
@@ -1,6 +1,23 @@
 "use strict";
 
 function testAddRange(exception, range, endpoints, qualifier, testName) {
+    if (!isSelectableNode(endpoints[0]) || !isSelectableNode(endpoints[2])) {
+        test(function() {
+            assert_equals(exception, null, "Test setup must not throw exceptions");
+
+            assertSelectionNoChange(function() { selection.addRange(range); });
+            assert_equals(range.startContainer, endpoints[0],
+                "addRange() must not modify the startContainer of the Range it's given");
+            assert_equals(range.startOffset, endpoints[1],
+                "addRange() must not modify the startOffset of the Range it's given");
+            assert_equals(range.endContainer, endpoints[2],
+                "addRange() must not modify the endContainer of the Range it's given");
+            assert_equals(range.endOffset, endpoints[3],
+                "addRange() must not modify the endOffset of the Range it's given");
+        }, testName + ": " + qualifier + " addRange() must do nothing");
+        return;
+    }
+
     test(function() {
         assert_equals(exception, null, "Test setup must not throw exceptions");
 
@@ -176,7 +193,8 @@
             }
 
             testAddRange(exception, range1, endpoints1, "first", testName);
-            testAddRange(exception, range2, endpoints2, "second", testName);
+            if (selection.rangeCount > 0)
+                testAddRange(exception, range2, endpoints2, "second", testName);
         }
     }
 }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/selection/common.js b/third_party/WebKit/LayoutTests/external/wpt/selection/common.js
index 4b37c263..51579e4 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/selection/common.js
+++ b/third_party/WebKit/LayoutTests/external/wpt/selection/common.js
@@ -977,3 +977,14 @@
          "The operation should not replace a registered Range");
 }
 
+/**
+ * Check if the specified node can be selectable with window.getSelection()
+ * methods.
+ */
+function isSelectableNode(node) {
+    if (!node)
+        return false;
+    if (node.nodeType == Node.DOCUMENT_TYPE_NODE)
+        return false;
+    return document.contains(node);
+}
diff --git a/third_party/WebKit/LayoutTests/external/wpt/selection/extend-00-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/selection/extend-00-expected.txt
index 30e23be..9f670cf 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/selection/extend-00-expected.txt
+++ b/third_party/WebKit/LayoutTests/external/wpt/selection/extend-00-expected.txt
@@ -1,357 +1,5 @@
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
 This is a testharness.js-based test.
-Found 2992 tests; 2089 PASS, 903 FAIL, 0 TIMEOUT, 0 NOTRUN.
-PASS extend() with range 0 [] and point 0 [paras[0].firstChild, -1] 
-PASS extend() with range 0 [] and point 1 [paras[0].firstChild, 0] 
-PASS extend() with range 0 [] and point 2 [paras[0].firstChild, 1] 
-PASS extend() with range 0 [] and point 3 [paras[0].firstChild, 2] 
-PASS extend() with range 0 [] and point 4 [paras[0].firstChild, 8] 
-PASS extend() with range 0 [] and point 5 [paras[0].firstChild, 9] 
-PASS extend() with range 0 [] and point 6 [paras[0].firstChild, 10] 
-PASS extend() with range 0 [] and point 7 [paras[0].firstChild, 65535] 
-PASS extend() with range 0 [] and point 8 [paras[1].firstChild, -1] 
-PASS extend() with range 0 [] and point 9 [paras[1].firstChild, 0] 
-PASS extend() with range 0 [] and point 10 [paras[1].firstChild, 1] 
-PASS extend() with range 0 [] and point 11 [paras[1].firstChild, 2] 
-PASS extend() with range 0 [] and point 12 [paras[1].firstChild, 8] 
-PASS extend() with range 0 [] and point 13 [paras[1].firstChild, 9] 
-PASS extend() with range 0 [] and point 14 [paras[1].firstChild, 10] 
-PASS extend() with range 0 [] and point 15 [paras[1].firstChild, 65535] 
-PASS extend() with range 0 [] and point 16 [detachedPara1.firstChild, 0] 
-PASS extend() with range 0 [] and point 17 [detachedPara1.firstChild, 1] 
-PASS extend() with range 0 [] and point 18 [detachedPara1.firstChild, 8] 
-PASS extend() with range 0 [] and point 19 [detachedPara1.firstChild, 9] 
-PASS extend() with range 0 [] and point 20 [foreignPara1.firstChild, 0] 
-PASS extend() with range 0 [] and point 21 [foreignPara1.firstChild, 1] 
-PASS extend() with range 0 [] and point 22 [foreignPara1.firstChild, 8] 
-PASS extend() with range 0 [] and point 23 [foreignPara1.firstChild, 9] 
-PASS extend() with range 0 [] and point 24 [document.documentElement, -1] 
-PASS extend() with range 0 [] and point 25 [document.documentElement, 0] 
-PASS extend() with range 0 [] and point 26 [document.documentElement, 1] 
-PASS extend() with range 0 [] and point 27 [document.documentElement, 2] 
-PASS extend() with range 0 [] and point 28 [document.documentElement, 7] 
-PASS extend() with range 0 [] and point 29 [document.head, 1] 
-PASS extend() with range 0 [] and point 30 [document.body, 3] 
-PASS extend() with range 0 [] and point 31 [foreignDoc.documentElement, 0] 
-PASS extend() with range 0 [] and point 32 [foreignDoc.documentElement, 1] 
-PASS extend() with range 0 [] and point 33 [foreignDoc.head, 0] 
-PASS extend() with range 0 [] and point 34 [foreignDoc.body, 1] 
-PASS extend() with range 0 [] and point 35 [paras[0], 0] 
-PASS extend() with range 0 [] and point 36 [paras[0], 1] 
-PASS extend() with range 0 [] and point 37 [paras[0], 2] 
-PASS extend() with range 0 [] and point 38 [paras[1], 0] 
-PASS extend() with range 0 [] and point 39 [paras[1], 1] 
-PASS extend() with range 0 [] and point 40 [paras[1], 2] 
-PASS extend() with range 0 [] and point 41 [detachedPara1, 0] 
-PASS extend() with range 0 [] and point 42 [detachedPara1, 1] 
-PASS extend() with range 0 [] and point 43 [testDiv, 0] 
-PASS extend() with range 0 [] and point 44 [testDiv, 3] 
-PASS extend() with range 0 [] and point 45 [document, -1] 
-PASS extend() with range 0 [] and point 46 [document, 0] 
-PASS extend() with range 0 [] and point 47 [document, 1] 
-PASS extend() with range 0 [] and point 48 [document, 2] 
-PASS extend() with range 0 [] and point 49 [document, 3] 
-PASS extend() with range 0 [] and point 50 [comment, -1] 
-PASS extend() with range 0 [] and point 51 [comment, 0] 
-PASS extend() with range 0 [] and point 52 [comment, 4] 
-PASS extend() with range 0 [] and point 53 [comment, 96] 
-PASS extend() with range 0 [] and point 54 [foreignDoc, 0] 
-PASS extend() with range 0 [] and point 55 [foreignDoc, 1] 
-PASS extend() with range 0 [] and point 56 [foreignComment, 2] 
-PASS extend() with range 0 [] and point 57 [foreignTextNode, 0] 
-PASS extend() with range 0 [] and point 58 [foreignTextNode, 36] 
-PASS extend() with range 0 [] and point 59 [xmlDoc, -1] 
-PASS extend() with range 0 [] and point 60 [xmlDoc, 0] 
-PASS extend() with range 0 [] and point 61 [xmlDoc, 1] 
-PASS extend() with range 0 [] and point 62 [xmlDoc, 5] 
-PASS extend() with range 0 [] and point 63 [xmlComment, 0] 
-PASS extend() with range 0 [] and point 64 [xmlComment, 4] 
-PASS extend() with range 0 [] and point 65 [processingInstruction, 0] 
-PASS extend() with range 0 [] and point 66 [processingInstruction, 5] 
-PASS extend() with range 0 [] and point 67 [processingInstruction, 9] 
-PASS extend() with range 0 [] and point 68 [detachedTextNode, 0] 
-PASS extend() with range 0 [] and point 69 [detachedTextNode, 8] 
-PASS extend() with range 0 [] and point 70 [detachedForeignTextNode, 0] 
-PASS extend() with range 0 [] and point 71 [detachedForeignTextNode, 8] 
-PASS extend() with range 0 [] and point 72 [detachedXmlTextNode, 0] 
-PASS extend() with range 0 [] and point 73 [detachedXmlTextNode, 8] 
-PASS extend() with range 0 [] and point 74 [detachedProcessingInstruction, 12] 
-PASS extend() with range 0 [] and point 75 [detachedComment, 3] 
-PASS extend() with range 0 [] and point 76 [detachedComment, 5] 
-PASS extend() with range 0 [] and point 77 [detachedForeignComment, 0] 
-PASS extend() with range 0 [] and point 78 [detachedForeignComment, 4] 
-PASS extend() with range 0 [] and point 79 [detachedXmlComment, 2] 
-PASS extend() with range 0 [] and point 80 [docfrag, 0] 
-PASS extend() with range 0 [] and point 81 [foreignDocfrag, 0] 
-PASS extend() with range 0 [] and point 82 [xmlDocfrag, 0] 
-PASS extend() with range 0 [] and point 83 [doctype, 0] 
-PASS extend() with range 0 [] and point 84 [doctype, -17] 
-PASS extend() with range 0 [] and point 85 [doctype, 1] 
-PASS extend() with range 0 [] and point 86 [foreignDoctype, 0] 
-PASS extend() with range 0 [] and point 87 [xmlDoctype, 0] 
+Found 2024 tests; 2001 PASS, 23 FAIL, 0 TIMEOUT, 0 NOTRUN.
 PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 0 [paras[0].firstChild, -1] 
 PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 1 [paras[0].firstChild, 0] 
 PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 2 [paras[0].firstChild, 1] 
@@ -1612,886 +1260,6 @@
 PASS extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 86 [foreignDoctype, 0] 
 PASS extend() forwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 87 [xmlDoctype, 0] 
 PASS extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 87 [xmlDoctype, 0] 
-FAIL extend() with range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] and point 0 [paras[0].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] and point 1 [paras[0].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] and point 2 [paras[0].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] and point 3 [paras[0].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] and point 4 [paras[0].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] and point 5 [paras[0].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] and point 6 [paras[0].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] and point 7 [paras[0].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] and point 8 [paras[1].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] and point 9 [paras[1].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] and point 10 [paras[1].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] and point 11 [paras[1].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] and point 12 [paras[1].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] and point 13 [paras[1].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] and point 14 [paras[1].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] and point 15 [paras[1].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] and point 16 [detachedPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] and point 17 [detachedPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] and point 18 [detachedPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] and point 19 [detachedPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] and point 20 [foreignPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] and point 21 [foreignPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] and point 22 [foreignPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] and point 23 [foreignPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] and point 24 [document.documentElement, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] and point 25 [document.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] and point 26 [document.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] and point 27 [document.documentElement, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] and point 28 [document.documentElement, 7] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] and point 29 [document.head, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] and point 30 [document.body, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] and point 31 [foreignDoc.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] and point 32 [foreignDoc.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] and point 33 [foreignDoc.head, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] and point 34 [foreignDoc.body, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] and point 35 [paras[0], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] and point 36 [paras[0], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] and point 37 [paras[0], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] and point 38 [paras[1], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] and point 39 [paras[1], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] and point 40 [paras[1], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] and point 41 [detachedPara1, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] and point 42 [detachedPara1, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] and point 43 [testDiv, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] and point 44 [testDiv, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] and point 45 [document, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] and point 46 [document, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] and point 47 [document, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] and point 48 [document, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] and point 49 [document, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] and point 50 [comment, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] and point 51 [comment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] and point 52 [comment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] and point 53 [comment, 96] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] and point 54 [foreignDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] and point 55 [foreignDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] and point 56 [foreignComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] and point 57 [foreignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] and point 58 [foreignTextNode, 36] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] and point 59 [xmlDoc, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] and point 60 [xmlDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] and point 61 [xmlDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] and point 62 [xmlDoc, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] and point 63 [xmlComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] and point 64 [xmlComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] and point 65 [processingInstruction, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] and point 66 [processingInstruction, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] and point 67 [processingInstruction, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] and point 68 [detachedTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] and point 69 [detachedTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] and point 70 [detachedForeignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] and point 71 [detachedForeignTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] and point 72 [detachedXmlTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] and point 73 [detachedXmlTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] and point 74 [detachedProcessingInstruction, 12] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] and point 75 [detachedComment, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] and point 76 [detachedComment, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] and point 77 [detachedForeignComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] and point 78 [detachedForeignComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] and point 79 [detachedXmlComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] and point 80 [docfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] and point 81 [foreignDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] and point 82 [xmlDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] and point 83 [doctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] and point 84 [doctype, -17] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] and point 85 [doctype, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] and point 86 [foreignDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] and point 87 [xmlDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 0 [paras[0].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 0 [paras[0].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 1 [paras[0].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 1 [paras[0].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 2 [paras[0].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 2 [paras[0].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 3 [paras[0].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 3 [paras[0].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 4 [paras[0].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 4 [paras[0].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 5 [paras[0].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 5 [paras[0].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 6 [paras[0].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 6 [paras[0].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 7 [paras[0].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 7 [paras[0].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 8 [paras[1].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 8 [paras[1].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 9 [paras[1].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 9 [paras[1].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 10 [paras[1].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 10 [paras[1].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 11 [paras[1].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 11 [paras[1].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 12 [paras[1].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 12 [paras[1].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 13 [paras[1].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 13 [paras[1].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 14 [paras[1].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 14 [paras[1].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 15 [paras[1].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 15 [paras[1].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 16 [detachedPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 16 [detachedPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 17 [detachedPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 17 [detachedPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 18 [detachedPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 18 [detachedPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 19 [detachedPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 19 [detachedPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 20 [foreignPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 20 [foreignPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 21 [foreignPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 21 [foreignPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 22 [foreignPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 22 [foreignPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 23 [foreignPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 23 [foreignPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 24 [document.documentElement, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 24 [document.documentElement, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 25 [document.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 25 [document.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 26 [document.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 26 [document.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 27 [document.documentElement, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 27 [document.documentElement, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 28 [document.documentElement, 7] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 28 [document.documentElement, 7] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 29 [document.head, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 29 [document.head, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 30 [document.body, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 30 [document.body, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 31 [foreignDoc.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 31 [foreignDoc.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 32 [foreignDoc.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 32 [foreignDoc.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 33 [foreignDoc.head, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 33 [foreignDoc.head, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 34 [foreignDoc.body, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 34 [foreignDoc.body, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 35 [paras[0], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 35 [paras[0], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 36 [paras[0], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 36 [paras[0], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 37 [paras[0], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 37 [paras[0], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 38 [paras[1], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 38 [paras[1], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 39 [paras[1], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 39 [paras[1], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 40 [paras[1], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 40 [paras[1], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 41 [detachedPara1, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 41 [detachedPara1, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 42 [detachedPara1, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 42 [detachedPara1, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 43 [testDiv, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 43 [testDiv, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 44 [testDiv, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 44 [testDiv, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 45 [document, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 45 [document, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 46 [document, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 46 [document, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 47 [document, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 47 [document, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 48 [document, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 48 [document, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 49 [document, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 49 [document, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 50 [comment, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 50 [comment, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 51 [comment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 51 [comment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 52 [comment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 52 [comment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 53 [comment, 96] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 53 [comment, 96] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 54 [foreignDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 54 [foreignDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 55 [foreignDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 55 [foreignDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 56 [foreignComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 56 [foreignComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 57 [foreignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 57 [foreignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 58 [foreignTextNode, 36] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 58 [foreignTextNode, 36] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 59 [xmlDoc, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 59 [xmlDoc, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 60 [xmlDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 60 [xmlDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 61 [xmlDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 61 [xmlDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 62 [xmlDoc, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 62 [xmlDoc, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 63 [xmlComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 63 [xmlComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 64 [xmlComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 64 [xmlComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 65 [processingInstruction, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 65 [processingInstruction, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 66 [processingInstruction, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 66 [processingInstruction, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 67 [processingInstruction, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 67 [processingInstruction, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 68 [detachedTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 68 [detachedTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 69 [detachedTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 69 [detachedTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 70 [detachedForeignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 70 [detachedForeignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 71 [detachedForeignTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 71 [detachedForeignTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 72 [detachedXmlTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 72 [detachedXmlTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 73 [detachedXmlTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 73 [detachedXmlTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 74 [detachedProcessingInstruction, 12] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 74 [detachedProcessingInstruction, 12] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 75 [detachedComment, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 75 [detachedComment, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 76 [detachedComment, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 76 [detachedComment, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 77 [detachedForeignComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 77 [detachedForeignComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 78 [detachedForeignComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 78 [detachedForeignComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 79 [detachedXmlComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 79 [detachedXmlComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 80 [docfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 80 [docfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 81 [foreignDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 81 [foreignDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 82 [xmlDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 82 [xmlDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 83 [doctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 83 [doctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 84 [doctype, -17] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 84 [doctype, -17] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 85 [doctype, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 85 [doctype, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 86 [foreignDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 86 [foreignDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 87 [xmlDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] and point 87 [xmlDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 0 [paras[0].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 0 [paras[0].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 1 [paras[0].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 1 [paras[0].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 2 [paras[0].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 2 [paras[0].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 3 [paras[0].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 3 [paras[0].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 4 [paras[0].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 4 [paras[0].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 5 [paras[0].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 5 [paras[0].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 6 [paras[0].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 6 [paras[0].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 7 [paras[0].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 7 [paras[0].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 8 [paras[1].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 8 [paras[1].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 9 [paras[1].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 9 [paras[1].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 10 [paras[1].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 10 [paras[1].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 11 [paras[1].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 11 [paras[1].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 12 [paras[1].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 12 [paras[1].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 13 [paras[1].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 13 [paras[1].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 14 [paras[1].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 14 [paras[1].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 15 [paras[1].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 15 [paras[1].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 16 [detachedPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 16 [detachedPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 17 [detachedPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 17 [detachedPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 18 [detachedPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 18 [detachedPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 19 [detachedPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 19 [detachedPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 20 [foreignPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 20 [foreignPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 21 [foreignPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 21 [foreignPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 22 [foreignPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 22 [foreignPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 23 [foreignPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 23 [foreignPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 24 [document.documentElement, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 24 [document.documentElement, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 25 [document.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 25 [document.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 26 [document.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 26 [document.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 27 [document.documentElement, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 27 [document.documentElement, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 28 [document.documentElement, 7] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 28 [document.documentElement, 7] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 29 [document.head, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 29 [document.head, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 30 [document.body, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 30 [document.body, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 31 [foreignDoc.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 31 [foreignDoc.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 32 [foreignDoc.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 32 [foreignDoc.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 33 [foreignDoc.head, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 33 [foreignDoc.head, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 34 [foreignDoc.body, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 34 [foreignDoc.body, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 35 [paras[0], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 35 [paras[0], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 36 [paras[0], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 36 [paras[0], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 37 [paras[0], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 37 [paras[0], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 38 [paras[1], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 38 [paras[1], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 39 [paras[1], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 39 [paras[1], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 40 [paras[1], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 40 [paras[1], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 41 [detachedPara1, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 41 [detachedPara1, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 42 [detachedPara1, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 42 [detachedPara1, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 43 [testDiv, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 43 [testDiv, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 44 [testDiv, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 44 [testDiv, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 45 [document, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 45 [document, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 46 [document, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 46 [document, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 47 [document, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 47 [document, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 48 [document, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 48 [document, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 49 [document, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 49 [document, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 50 [comment, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 50 [comment, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 51 [comment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 51 [comment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 52 [comment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 52 [comment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 53 [comment, 96] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 53 [comment, 96] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 54 [foreignDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 54 [foreignDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 55 [foreignDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 55 [foreignDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 56 [foreignComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 56 [foreignComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 57 [foreignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 57 [foreignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 58 [foreignTextNode, 36] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 58 [foreignTextNode, 36] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 59 [xmlDoc, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 59 [xmlDoc, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 60 [xmlDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 60 [xmlDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 61 [xmlDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 61 [xmlDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 62 [xmlDoc, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 62 [xmlDoc, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 63 [xmlComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 63 [xmlComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 64 [xmlComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 64 [xmlComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 65 [processingInstruction, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 65 [processingInstruction, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 66 [processingInstruction, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 66 [processingInstruction, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 67 [processingInstruction, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 67 [processingInstruction, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 68 [detachedTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 68 [detachedTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 69 [detachedTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 69 [detachedTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 70 [detachedForeignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 70 [detachedForeignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 71 [detachedForeignTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 71 [detachedForeignTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 72 [detachedXmlTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 72 [detachedXmlTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 73 [detachedXmlTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 73 [detachedXmlTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 74 [detachedProcessingInstruction, 12] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 74 [detachedProcessingInstruction, 12] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 75 [detachedComment, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 75 [detachedComment, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 76 [detachedComment, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 76 [detachedComment, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 77 [detachedForeignComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 77 [detachedForeignComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 78 [detachedForeignComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 78 [detachedForeignComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 79 [detachedXmlComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 79 [detachedXmlComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 80 [docfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 80 [docfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 81 [foreignDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 81 [foreignDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 82 [xmlDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 82 [xmlDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 83 [doctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 83 [doctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 84 [doctype, -17] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 84 [doctype, -17] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 85 [doctype, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 85 [doctype, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 86 [foreignDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 86 [foreignDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 87 [xmlDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] and point 87 [xmlDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] and point 0 [paras[0].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] and point 1 [paras[0].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] and point 2 [paras[0].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] and point 3 [paras[0].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] and point 4 [paras[0].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] and point 5 [paras[0].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] and point 6 [paras[0].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] and point 7 [paras[0].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] and point 8 [paras[1].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] and point 9 [paras[1].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] and point 10 [paras[1].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] and point 11 [paras[1].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] and point 12 [paras[1].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] and point 13 [paras[1].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] and point 14 [paras[1].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] and point 15 [paras[1].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] and point 16 [detachedPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] and point 17 [detachedPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] and point 18 [detachedPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] and point 19 [detachedPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] and point 20 [foreignPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] and point 21 [foreignPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] and point 22 [foreignPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] and point 23 [foreignPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] and point 24 [document.documentElement, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] and point 25 [document.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] and point 26 [document.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] and point 27 [document.documentElement, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] and point 28 [document.documentElement, 7] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] and point 29 [document.head, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] and point 30 [document.body, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] and point 31 [foreignDoc.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] and point 32 [foreignDoc.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] and point 33 [foreignDoc.head, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] and point 34 [foreignDoc.body, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] and point 35 [paras[0], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] and point 36 [paras[0], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] and point 37 [paras[0], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] and point 38 [paras[1], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] and point 39 [paras[1], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] and point 40 [paras[1], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] and point 41 [detachedPara1, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] and point 42 [detachedPara1, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] and point 43 [testDiv, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] and point 44 [testDiv, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] and point 45 [document, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] and point 46 [document, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] and point 47 [document, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] and point 48 [document, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] and point 49 [document, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] and point 50 [comment, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] and point 51 [comment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] and point 52 [comment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] and point 53 [comment, 96] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] and point 54 [foreignDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] and point 55 [foreignDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] and point 56 [foreignComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] and point 57 [foreignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] and point 58 [foreignTextNode, 36] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] and point 59 [xmlDoc, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] and point 60 [xmlDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] and point 61 [xmlDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] and point 62 [xmlDoc, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] and point 63 [xmlComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] and point 64 [xmlComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] and point 65 [processingInstruction, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] and point 66 [processingInstruction, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] and point 67 [processingInstruction, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] and point 68 [detachedTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] and point 69 [detachedTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] and point 70 [detachedForeignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] and point 71 [detachedForeignTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] and point 72 [detachedXmlTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] and point 73 [detachedXmlTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] and point 74 [detachedProcessingInstruction, 12] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] and point 75 [detachedComment, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] and point 76 [detachedComment, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] and point 77 [detachedForeignComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] and point 78 [detachedForeignComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] and point 79 [detachedXmlComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] and point 80 [docfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] and point 81 [foreignDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] and point 82 [xmlDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] and point 83 [doctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] and point 84 [doctype, -17] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] and point 85 [doctype, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] and point 86 [foreignDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] and point 87 [xmlDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 0 [paras[0].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 0 [paras[0].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 1 [paras[0].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 1 [paras[0].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 2 [paras[0].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 2 [paras[0].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 3 [paras[0].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 3 [paras[0].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 4 [paras[0].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 4 [paras[0].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 5 [paras[0].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 5 [paras[0].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 6 [paras[0].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 6 [paras[0].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 7 [paras[0].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 7 [paras[0].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 8 [paras[1].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 8 [paras[1].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 9 [paras[1].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 9 [paras[1].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 10 [paras[1].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 10 [paras[1].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 11 [paras[1].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 11 [paras[1].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 12 [paras[1].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 12 [paras[1].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 13 [paras[1].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 13 [paras[1].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 14 [paras[1].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 14 [paras[1].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 15 [paras[1].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 15 [paras[1].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 16 [detachedPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 16 [detachedPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 17 [detachedPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 17 [detachedPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 18 [detachedPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 18 [detachedPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 19 [detachedPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 19 [detachedPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 20 [foreignPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 20 [foreignPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 21 [foreignPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 21 [foreignPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 22 [foreignPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 22 [foreignPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 23 [foreignPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 23 [foreignPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 24 [document.documentElement, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 24 [document.documentElement, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 25 [document.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 25 [document.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 26 [document.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 26 [document.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 27 [document.documentElement, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 27 [document.documentElement, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 28 [document.documentElement, 7] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 28 [document.documentElement, 7] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 29 [document.head, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 29 [document.head, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 30 [document.body, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 30 [document.body, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 31 [foreignDoc.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 31 [foreignDoc.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 32 [foreignDoc.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 32 [foreignDoc.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 33 [foreignDoc.head, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 33 [foreignDoc.head, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 34 [foreignDoc.body, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 34 [foreignDoc.body, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 35 [paras[0], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 35 [paras[0], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 36 [paras[0], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 36 [paras[0], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 37 [paras[0], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 37 [paras[0], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 38 [paras[1], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 38 [paras[1], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 39 [paras[1], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 39 [paras[1], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 40 [paras[1], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 40 [paras[1], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 41 [detachedPara1, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 41 [detachedPara1, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 42 [detachedPara1, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 42 [detachedPara1, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 43 [testDiv, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 43 [testDiv, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 44 [testDiv, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 44 [testDiv, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 45 [document, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 45 [document, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 46 [document, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 46 [document, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 47 [document, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 47 [document, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 48 [document, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 48 [document, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 49 [document, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 49 [document, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 50 [comment, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 50 [comment, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 51 [comment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 51 [comment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 52 [comment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 52 [comment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 53 [comment, 96] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 53 [comment, 96] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 54 [foreignDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 54 [foreignDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 55 [foreignDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 55 [foreignDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 56 [foreignComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 56 [foreignComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 57 [foreignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 57 [foreignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 58 [foreignTextNode, 36] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 58 [foreignTextNode, 36] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 59 [xmlDoc, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 59 [xmlDoc, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 60 [xmlDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 60 [xmlDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 61 [xmlDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 61 [xmlDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 62 [xmlDoc, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 62 [xmlDoc, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 63 [xmlComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 63 [xmlComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 64 [xmlComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 64 [xmlComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 65 [processingInstruction, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 65 [processingInstruction, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 66 [processingInstruction, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 66 [processingInstruction, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 67 [processingInstruction, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 67 [processingInstruction, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 68 [detachedTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 68 [detachedTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 69 [detachedTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 69 [detachedTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 70 [detachedForeignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 70 [detachedForeignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 71 [detachedForeignTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 71 [detachedForeignTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 72 [detachedXmlTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 72 [detachedXmlTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 73 [detachedXmlTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 73 [detachedXmlTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 74 [detachedProcessingInstruction, 12] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 74 [detachedProcessingInstruction, 12] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 75 [detachedComment, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 75 [detachedComment, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 76 [detachedComment, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 76 [detachedComment, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 77 [detachedForeignComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 77 [detachedForeignComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 78 [detachedForeignComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 78 [detachedForeignComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 79 [detachedXmlComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 79 [detachedXmlComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 80 [docfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 80 [docfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 81 [foreignDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 81 [foreignDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 82 [xmlDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 82 [xmlDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 83 [doctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 83 [doctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 84 [doctype, -17] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 84 [doctype, -17] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 85 [doctype, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 85 [doctype, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 86 [foreignDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 86 [foreignDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 87 [xmlDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] and point 87 [xmlDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 0 [paras[0].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 0 [paras[0].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 1 [paras[0].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 1 [paras[0].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 2 [paras[0].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 2 [paras[0].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 3 [paras[0].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 3 [paras[0].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 4 [paras[0].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 4 [paras[0].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 5 [paras[0].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 5 [paras[0].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 6 [paras[0].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 6 [paras[0].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 7 [paras[0].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 7 [paras[0].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 8 [paras[1].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 8 [paras[1].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 9 [paras[1].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 9 [paras[1].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 10 [paras[1].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 10 [paras[1].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 11 [paras[1].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 11 [paras[1].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 12 [paras[1].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 12 [paras[1].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 13 [paras[1].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 13 [paras[1].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 14 [paras[1].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 14 [paras[1].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 15 [paras[1].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 15 [paras[1].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 16 [detachedPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 16 [detachedPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 17 [detachedPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 17 [detachedPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 18 [detachedPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 18 [detachedPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 19 [detachedPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 19 [detachedPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 20 [foreignPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 20 [foreignPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 21 [foreignPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 21 [foreignPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 22 [foreignPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 22 [foreignPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 23 [foreignPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 23 [foreignPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 24 [document.documentElement, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 24 [document.documentElement, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 25 [document.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 25 [document.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 26 [document.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 26 [document.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 27 [document.documentElement, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 27 [document.documentElement, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 28 [document.documentElement, 7] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 28 [document.documentElement, 7] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 29 [document.head, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 29 [document.head, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 30 [document.body, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 30 [document.body, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 31 [foreignDoc.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 31 [foreignDoc.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 32 [foreignDoc.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 32 [foreignDoc.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 33 [foreignDoc.head, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 33 [foreignDoc.head, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 34 [foreignDoc.body, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 34 [foreignDoc.body, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 35 [paras[0], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 35 [paras[0], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 36 [paras[0], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 36 [paras[0], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 37 [paras[0], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 37 [paras[0], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 38 [paras[1], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 38 [paras[1], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 39 [paras[1], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 39 [paras[1], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 40 [paras[1], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 40 [paras[1], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 41 [detachedPara1, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 41 [detachedPara1, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 42 [detachedPara1, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 42 [detachedPara1, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 43 [testDiv, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 43 [testDiv, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 44 [testDiv, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 44 [testDiv, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 45 [document, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 45 [document, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 46 [document, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 46 [document, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 47 [document, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 47 [document, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 48 [document, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 48 [document, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 49 [document, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 49 [document, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 50 [comment, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 50 [comment, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 51 [comment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 51 [comment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 52 [comment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 52 [comment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 53 [comment, 96] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 53 [comment, 96] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 54 [foreignDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 54 [foreignDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 55 [foreignDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 55 [foreignDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 56 [foreignComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 56 [foreignComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 57 [foreignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 57 [foreignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 58 [foreignTextNode, 36] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 58 [foreignTextNode, 36] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 59 [xmlDoc, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 59 [xmlDoc, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 60 [xmlDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 60 [xmlDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 61 [xmlDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 61 [xmlDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 62 [xmlDoc, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 62 [xmlDoc, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 63 [xmlComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 63 [xmlComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 64 [xmlComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 64 [xmlComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 65 [processingInstruction, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 65 [processingInstruction, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 66 [processingInstruction, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 66 [processingInstruction, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 67 [processingInstruction, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 67 [processingInstruction, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 68 [detachedTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 68 [detachedTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 69 [detachedTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 69 [detachedTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 70 [detachedForeignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 70 [detachedForeignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 71 [detachedForeignTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 71 [detachedForeignTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 72 [detachedXmlTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 72 [detachedXmlTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 73 [detachedXmlTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 73 [detachedXmlTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 74 [detachedProcessingInstruction, 12] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 74 [detachedProcessingInstruction, 12] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 75 [detachedComment, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 75 [detachedComment, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 76 [detachedComment, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 76 [detachedComment, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 77 [detachedForeignComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 77 [detachedForeignComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 78 [detachedForeignComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 78 [detachedForeignComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 79 [detachedXmlComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 79 [detachedXmlComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 80 [docfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 80 [docfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 81 [foreignDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 81 [foreignDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 82 [xmlDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 82 [xmlDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 83 [doctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 83 [doctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 84 [doctype, -17] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 84 [doctype, -17] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 85 [doctype, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 85 [doctype, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 86 [foreignDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 86 [foreignDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 87 [xmlDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] and point 87 [xmlDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
 PASS extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 0 [paras[0].firstChild, -1] 
 PASS extend() backwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 0 [paras[0].firstChild, -1] 
 PASS extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 1 [paras[0].firstChild, 0] 
diff --git a/third_party/WebKit/LayoutTests/external/wpt/selection/extend-20-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/selection/extend-20-expected.txt
index 8f3626f..800aadb 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/selection/extend-20-expected.txt
+++ b/third_party/WebKit/LayoutTests/external/wpt/selection/extend-20-expected.txt
@@ -1,533 +1,5 @@
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
 This is a testharness.js-based test.
-Found 3168 tests; 2349 PASS, 819 FAIL, 0 TIMEOUT, 0 NOTRUN.
-FAIL extend() forwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 0 [paras[0].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 0 [paras[0].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 1 [paras[0].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 1 [paras[0].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 2 [paras[0].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 2 [paras[0].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 3 [paras[0].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 3 [paras[0].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 4 [paras[0].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 4 [paras[0].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 5 [paras[0].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 5 [paras[0].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 6 [paras[0].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 6 [paras[0].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 7 [paras[0].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 7 [paras[0].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 8 [paras[1].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 8 [paras[1].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 9 [paras[1].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 9 [paras[1].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 10 [paras[1].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 10 [paras[1].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 11 [paras[1].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 11 [paras[1].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 12 [paras[1].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 12 [paras[1].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 13 [paras[1].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 13 [paras[1].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 14 [paras[1].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 14 [paras[1].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 15 [paras[1].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 15 [paras[1].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 16 [detachedPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 16 [detachedPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 17 [detachedPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 17 [detachedPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 18 [detachedPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 18 [detachedPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 19 [detachedPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 19 [detachedPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 20 [foreignPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 20 [foreignPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 21 [foreignPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 21 [foreignPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 22 [foreignPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 22 [foreignPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 23 [foreignPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 23 [foreignPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 24 [document.documentElement, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 24 [document.documentElement, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 25 [document.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 25 [document.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 26 [document.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 26 [document.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 27 [document.documentElement, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 27 [document.documentElement, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 28 [document.documentElement, 7] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 28 [document.documentElement, 7] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 29 [document.head, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 29 [document.head, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 30 [document.body, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 30 [document.body, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 31 [foreignDoc.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 31 [foreignDoc.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 32 [foreignDoc.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 32 [foreignDoc.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 33 [foreignDoc.head, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 33 [foreignDoc.head, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 34 [foreignDoc.body, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 34 [foreignDoc.body, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 35 [paras[0], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 35 [paras[0], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 36 [paras[0], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 36 [paras[0], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 37 [paras[0], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 37 [paras[0], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 38 [paras[1], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 38 [paras[1], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 39 [paras[1], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 39 [paras[1], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 40 [paras[1], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 40 [paras[1], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 41 [detachedPara1, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 41 [detachedPara1, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 42 [detachedPara1, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 42 [detachedPara1, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 43 [testDiv, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 43 [testDiv, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 44 [testDiv, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 44 [testDiv, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 45 [document, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 45 [document, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 46 [document, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 46 [document, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 47 [document, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 47 [document, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 48 [document, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 48 [document, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 49 [document, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 49 [document, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 50 [comment, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 50 [comment, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 51 [comment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 51 [comment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 52 [comment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 52 [comment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 53 [comment, 96] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 53 [comment, 96] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 54 [foreignDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 54 [foreignDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 55 [foreignDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 55 [foreignDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 56 [foreignComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 56 [foreignComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 57 [foreignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 57 [foreignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 58 [foreignTextNode, 36] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 58 [foreignTextNode, 36] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 59 [xmlDoc, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 59 [xmlDoc, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 60 [xmlDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 60 [xmlDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 61 [xmlDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 61 [xmlDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 62 [xmlDoc, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 62 [xmlDoc, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 63 [xmlComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 63 [xmlComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 64 [xmlComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 64 [xmlComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 65 [processingInstruction, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 65 [processingInstruction, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 66 [processingInstruction, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 66 [processingInstruction, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 67 [processingInstruction, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 67 [processingInstruction, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 68 [detachedTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 68 [detachedTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 69 [detachedTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 69 [detachedTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 70 [detachedForeignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 70 [detachedForeignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 71 [detachedForeignTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 71 [detachedForeignTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 72 [detachedXmlTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 72 [detachedXmlTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 73 [detachedXmlTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 73 [detachedXmlTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 74 [detachedProcessingInstruction, 12] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 74 [detachedProcessingInstruction, 12] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 75 [detachedComment, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 75 [detachedComment, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 76 [detachedComment, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 76 [detachedComment, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 77 [detachedForeignComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 77 [detachedForeignComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 78 [detachedForeignComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 78 [detachedForeignComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 79 [detachedXmlComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 79 [detachedXmlComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 80 [docfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 80 [docfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 81 [foreignDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 81 [foreignDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 82 [xmlDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 82 [xmlDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 83 [doctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 83 [doctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 84 [doctype, -17] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 84 [doctype, -17] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 85 [doctype, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 85 [doctype, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 86 [foreignDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 86 [foreignDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 87 [xmlDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] and point 87 [xmlDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 21 [foreignDoc.head, 1, foreignDoc.head, 1] and point 0 [paras[0].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 21 [foreignDoc.head, 1, foreignDoc.head, 1] and point 1 [paras[0].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 21 [foreignDoc.head, 1, foreignDoc.head, 1] and point 2 [paras[0].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 21 [foreignDoc.head, 1, foreignDoc.head, 1] and point 3 [paras[0].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 21 [foreignDoc.head, 1, foreignDoc.head, 1] and point 4 [paras[0].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 21 [foreignDoc.head, 1, foreignDoc.head, 1] and point 5 [paras[0].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 21 [foreignDoc.head, 1, foreignDoc.head, 1] and point 6 [paras[0].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 21 [foreignDoc.head, 1, foreignDoc.head, 1] and point 7 [paras[0].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 21 [foreignDoc.head, 1, foreignDoc.head, 1] and point 8 [paras[1].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 21 [foreignDoc.head, 1, foreignDoc.head, 1] and point 9 [paras[1].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 21 [foreignDoc.head, 1, foreignDoc.head, 1] and point 10 [paras[1].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 21 [foreignDoc.head, 1, foreignDoc.head, 1] and point 11 [paras[1].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 21 [foreignDoc.head, 1, foreignDoc.head, 1] and point 12 [paras[1].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 21 [foreignDoc.head, 1, foreignDoc.head, 1] and point 13 [paras[1].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 21 [foreignDoc.head, 1, foreignDoc.head, 1] and point 14 [paras[1].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 21 [foreignDoc.head, 1, foreignDoc.head, 1] and point 15 [paras[1].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 21 [foreignDoc.head, 1, foreignDoc.head, 1] and point 16 [detachedPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 21 [foreignDoc.head, 1, foreignDoc.head, 1] and point 17 [detachedPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 21 [foreignDoc.head, 1, foreignDoc.head, 1] and point 18 [detachedPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 21 [foreignDoc.head, 1, foreignDoc.head, 1] and point 19 [detachedPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 21 [foreignDoc.head, 1, foreignDoc.head, 1] and point 20 [foreignPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 21 [foreignDoc.head, 1, foreignDoc.head, 1] and point 21 [foreignPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 21 [foreignDoc.head, 1, foreignDoc.head, 1] and point 22 [foreignPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 21 [foreignDoc.head, 1, foreignDoc.head, 1] and point 23 [foreignPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 21 [foreignDoc.head, 1, foreignDoc.head, 1] and point 24 [document.documentElement, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 21 [foreignDoc.head, 1, foreignDoc.head, 1] and point 25 [document.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 21 [foreignDoc.head, 1, foreignDoc.head, 1] and point 26 [document.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 21 [foreignDoc.head, 1, foreignDoc.head, 1] and point 27 [document.documentElement, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 21 [foreignDoc.head, 1, foreignDoc.head, 1] and point 28 [document.documentElement, 7] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 21 [foreignDoc.head, 1, foreignDoc.head, 1] and point 29 [document.head, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 21 [foreignDoc.head, 1, foreignDoc.head, 1] and point 30 [document.body, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 21 [foreignDoc.head, 1, foreignDoc.head, 1] and point 31 [foreignDoc.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 21 [foreignDoc.head, 1, foreignDoc.head, 1] and point 32 [foreignDoc.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 21 [foreignDoc.head, 1, foreignDoc.head, 1] and point 33 [foreignDoc.head, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 21 [foreignDoc.head, 1, foreignDoc.head, 1] and point 34 [foreignDoc.body, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 21 [foreignDoc.head, 1, foreignDoc.head, 1] and point 35 [paras[0], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 21 [foreignDoc.head, 1, foreignDoc.head, 1] and point 36 [paras[0], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 21 [foreignDoc.head, 1, foreignDoc.head, 1] and point 37 [paras[0], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 21 [foreignDoc.head, 1, foreignDoc.head, 1] and point 38 [paras[1], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 21 [foreignDoc.head, 1, foreignDoc.head, 1] and point 39 [paras[1], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 21 [foreignDoc.head, 1, foreignDoc.head, 1] and point 40 [paras[1], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 21 [foreignDoc.head, 1, foreignDoc.head, 1] and point 41 [detachedPara1, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 21 [foreignDoc.head, 1, foreignDoc.head, 1] and point 42 [detachedPara1, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 21 [foreignDoc.head, 1, foreignDoc.head, 1] and point 43 [testDiv, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 21 [foreignDoc.head, 1, foreignDoc.head, 1] and point 44 [testDiv, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 21 [foreignDoc.head, 1, foreignDoc.head, 1] and point 45 [document, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 21 [foreignDoc.head, 1, foreignDoc.head, 1] and point 46 [document, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 21 [foreignDoc.head, 1, foreignDoc.head, 1] and point 47 [document, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 21 [foreignDoc.head, 1, foreignDoc.head, 1] and point 48 [document, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 21 [foreignDoc.head, 1, foreignDoc.head, 1] and point 49 [document, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 21 [foreignDoc.head, 1, foreignDoc.head, 1] and point 50 [comment, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 21 [foreignDoc.head, 1, foreignDoc.head, 1] and point 51 [comment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 21 [foreignDoc.head, 1, foreignDoc.head, 1] and point 52 [comment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 21 [foreignDoc.head, 1, foreignDoc.head, 1] and point 53 [comment, 96] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 21 [foreignDoc.head, 1, foreignDoc.head, 1] and point 54 [foreignDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 21 [foreignDoc.head, 1, foreignDoc.head, 1] and point 55 [foreignDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 21 [foreignDoc.head, 1, foreignDoc.head, 1] and point 56 [foreignComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 21 [foreignDoc.head, 1, foreignDoc.head, 1] and point 57 [foreignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 21 [foreignDoc.head, 1, foreignDoc.head, 1] and point 58 [foreignTextNode, 36] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 21 [foreignDoc.head, 1, foreignDoc.head, 1] and point 59 [xmlDoc, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 21 [foreignDoc.head, 1, foreignDoc.head, 1] and point 60 [xmlDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 21 [foreignDoc.head, 1, foreignDoc.head, 1] and point 61 [xmlDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 21 [foreignDoc.head, 1, foreignDoc.head, 1] and point 62 [xmlDoc, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 21 [foreignDoc.head, 1, foreignDoc.head, 1] and point 63 [xmlComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 21 [foreignDoc.head, 1, foreignDoc.head, 1] and point 64 [xmlComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 21 [foreignDoc.head, 1, foreignDoc.head, 1] and point 65 [processingInstruction, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 21 [foreignDoc.head, 1, foreignDoc.head, 1] and point 66 [processingInstruction, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 21 [foreignDoc.head, 1, foreignDoc.head, 1] and point 67 [processingInstruction, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 21 [foreignDoc.head, 1, foreignDoc.head, 1] and point 68 [detachedTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 21 [foreignDoc.head, 1, foreignDoc.head, 1] and point 69 [detachedTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 21 [foreignDoc.head, 1, foreignDoc.head, 1] and point 70 [detachedForeignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 21 [foreignDoc.head, 1, foreignDoc.head, 1] and point 71 [detachedForeignTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 21 [foreignDoc.head, 1, foreignDoc.head, 1] and point 72 [detachedXmlTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 21 [foreignDoc.head, 1, foreignDoc.head, 1] and point 73 [detachedXmlTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 21 [foreignDoc.head, 1, foreignDoc.head, 1] and point 74 [detachedProcessingInstruction, 12] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 21 [foreignDoc.head, 1, foreignDoc.head, 1] and point 75 [detachedComment, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 21 [foreignDoc.head, 1, foreignDoc.head, 1] and point 76 [detachedComment, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 21 [foreignDoc.head, 1, foreignDoc.head, 1] and point 77 [detachedForeignComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 21 [foreignDoc.head, 1, foreignDoc.head, 1] and point 78 [detachedForeignComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 21 [foreignDoc.head, 1, foreignDoc.head, 1] and point 79 [detachedXmlComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 21 [foreignDoc.head, 1, foreignDoc.head, 1] and point 80 [docfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 21 [foreignDoc.head, 1, foreignDoc.head, 1] and point 81 [foreignDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 21 [foreignDoc.head, 1, foreignDoc.head, 1] and point 82 [xmlDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 21 [foreignDoc.head, 1, foreignDoc.head, 1] and point 83 [doctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 21 [foreignDoc.head, 1, foreignDoc.head, 1] and point 84 [doctype, -17] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 21 [foreignDoc.head, 1, foreignDoc.head, 1] and point 85 [doctype, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 21 [foreignDoc.head, 1, foreignDoc.head, 1] and point 86 [foreignDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 21 [foreignDoc.head, 1, foreignDoc.head, 1] and point 87 [xmlDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 22 [foreignDoc.body, 0, foreignDoc.body, 0] and point 0 [paras[0].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 22 [foreignDoc.body, 0, foreignDoc.body, 0] and point 1 [paras[0].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 22 [foreignDoc.body, 0, foreignDoc.body, 0] and point 2 [paras[0].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 22 [foreignDoc.body, 0, foreignDoc.body, 0] and point 3 [paras[0].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 22 [foreignDoc.body, 0, foreignDoc.body, 0] and point 4 [paras[0].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 22 [foreignDoc.body, 0, foreignDoc.body, 0] and point 5 [paras[0].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 22 [foreignDoc.body, 0, foreignDoc.body, 0] and point 6 [paras[0].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 22 [foreignDoc.body, 0, foreignDoc.body, 0] and point 7 [paras[0].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 22 [foreignDoc.body, 0, foreignDoc.body, 0] and point 8 [paras[1].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 22 [foreignDoc.body, 0, foreignDoc.body, 0] and point 9 [paras[1].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 22 [foreignDoc.body, 0, foreignDoc.body, 0] and point 10 [paras[1].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 22 [foreignDoc.body, 0, foreignDoc.body, 0] and point 11 [paras[1].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 22 [foreignDoc.body, 0, foreignDoc.body, 0] and point 12 [paras[1].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 22 [foreignDoc.body, 0, foreignDoc.body, 0] and point 13 [paras[1].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 22 [foreignDoc.body, 0, foreignDoc.body, 0] and point 14 [paras[1].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 22 [foreignDoc.body, 0, foreignDoc.body, 0] and point 15 [paras[1].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 22 [foreignDoc.body, 0, foreignDoc.body, 0] and point 16 [detachedPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 22 [foreignDoc.body, 0, foreignDoc.body, 0] and point 17 [detachedPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 22 [foreignDoc.body, 0, foreignDoc.body, 0] and point 18 [detachedPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 22 [foreignDoc.body, 0, foreignDoc.body, 0] and point 19 [detachedPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 22 [foreignDoc.body, 0, foreignDoc.body, 0] and point 20 [foreignPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 22 [foreignDoc.body, 0, foreignDoc.body, 0] and point 21 [foreignPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 22 [foreignDoc.body, 0, foreignDoc.body, 0] and point 22 [foreignPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 22 [foreignDoc.body, 0, foreignDoc.body, 0] and point 23 [foreignPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 22 [foreignDoc.body, 0, foreignDoc.body, 0] and point 24 [document.documentElement, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 22 [foreignDoc.body, 0, foreignDoc.body, 0] and point 25 [document.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 22 [foreignDoc.body, 0, foreignDoc.body, 0] and point 26 [document.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 22 [foreignDoc.body, 0, foreignDoc.body, 0] and point 27 [document.documentElement, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 22 [foreignDoc.body, 0, foreignDoc.body, 0] and point 28 [document.documentElement, 7] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 22 [foreignDoc.body, 0, foreignDoc.body, 0] and point 29 [document.head, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 22 [foreignDoc.body, 0, foreignDoc.body, 0] and point 30 [document.body, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 22 [foreignDoc.body, 0, foreignDoc.body, 0] and point 31 [foreignDoc.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 22 [foreignDoc.body, 0, foreignDoc.body, 0] and point 32 [foreignDoc.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 22 [foreignDoc.body, 0, foreignDoc.body, 0] and point 33 [foreignDoc.head, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 22 [foreignDoc.body, 0, foreignDoc.body, 0] and point 34 [foreignDoc.body, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 22 [foreignDoc.body, 0, foreignDoc.body, 0] and point 35 [paras[0], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 22 [foreignDoc.body, 0, foreignDoc.body, 0] and point 36 [paras[0], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 22 [foreignDoc.body, 0, foreignDoc.body, 0] and point 37 [paras[0], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 22 [foreignDoc.body, 0, foreignDoc.body, 0] and point 38 [paras[1], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 22 [foreignDoc.body, 0, foreignDoc.body, 0] and point 39 [paras[1], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 22 [foreignDoc.body, 0, foreignDoc.body, 0] and point 40 [paras[1], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 22 [foreignDoc.body, 0, foreignDoc.body, 0] and point 41 [detachedPara1, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 22 [foreignDoc.body, 0, foreignDoc.body, 0] and point 42 [detachedPara1, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 22 [foreignDoc.body, 0, foreignDoc.body, 0] and point 43 [testDiv, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 22 [foreignDoc.body, 0, foreignDoc.body, 0] and point 44 [testDiv, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 22 [foreignDoc.body, 0, foreignDoc.body, 0] and point 45 [document, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 22 [foreignDoc.body, 0, foreignDoc.body, 0] and point 46 [document, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 22 [foreignDoc.body, 0, foreignDoc.body, 0] and point 47 [document, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 22 [foreignDoc.body, 0, foreignDoc.body, 0] and point 48 [document, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 22 [foreignDoc.body, 0, foreignDoc.body, 0] and point 49 [document, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 22 [foreignDoc.body, 0, foreignDoc.body, 0] and point 50 [comment, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 22 [foreignDoc.body, 0, foreignDoc.body, 0] and point 51 [comment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 22 [foreignDoc.body, 0, foreignDoc.body, 0] and point 52 [comment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 22 [foreignDoc.body, 0, foreignDoc.body, 0] and point 53 [comment, 96] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 22 [foreignDoc.body, 0, foreignDoc.body, 0] and point 54 [foreignDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 22 [foreignDoc.body, 0, foreignDoc.body, 0] and point 55 [foreignDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 22 [foreignDoc.body, 0, foreignDoc.body, 0] and point 56 [foreignComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 22 [foreignDoc.body, 0, foreignDoc.body, 0] and point 57 [foreignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 22 [foreignDoc.body, 0, foreignDoc.body, 0] and point 58 [foreignTextNode, 36] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 22 [foreignDoc.body, 0, foreignDoc.body, 0] and point 59 [xmlDoc, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 22 [foreignDoc.body, 0, foreignDoc.body, 0] and point 60 [xmlDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 22 [foreignDoc.body, 0, foreignDoc.body, 0] and point 61 [xmlDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 22 [foreignDoc.body, 0, foreignDoc.body, 0] and point 62 [xmlDoc, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 22 [foreignDoc.body, 0, foreignDoc.body, 0] and point 63 [xmlComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 22 [foreignDoc.body, 0, foreignDoc.body, 0] and point 64 [xmlComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 22 [foreignDoc.body, 0, foreignDoc.body, 0] and point 65 [processingInstruction, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 22 [foreignDoc.body, 0, foreignDoc.body, 0] and point 66 [processingInstruction, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 22 [foreignDoc.body, 0, foreignDoc.body, 0] and point 67 [processingInstruction, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 22 [foreignDoc.body, 0, foreignDoc.body, 0] and point 68 [detachedTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 22 [foreignDoc.body, 0, foreignDoc.body, 0] and point 69 [detachedTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 22 [foreignDoc.body, 0, foreignDoc.body, 0] and point 70 [detachedForeignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 22 [foreignDoc.body, 0, foreignDoc.body, 0] and point 71 [detachedForeignTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 22 [foreignDoc.body, 0, foreignDoc.body, 0] and point 72 [detachedXmlTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 22 [foreignDoc.body, 0, foreignDoc.body, 0] and point 73 [detachedXmlTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 22 [foreignDoc.body, 0, foreignDoc.body, 0] and point 74 [detachedProcessingInstruction, 12] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 22 [foreignDoc.body, 0, foreignDoc.body, 0] and point 75 [detachedComment, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 22 [foreignDoc.body, 0, foreignDoc.body, 0] and point 76 [detachedComment, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 22 [foreignDoc.body, 0, foreignDoc.body, 0] and point 77 [detachedForeignComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 22 [foreignDoc.body, 0, foreignDoc.body, 0] and point 78 [detachedForeignComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 22 [foreignDoc.body, 0, foreignDoc.body, 0] and point 79 [detachedXmlComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 22 [foreignDoc.body, 0, foreignDoc.body, 0] and point 80 [docfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 22 [foreignDoc.body, 0, foreignDoc.body, 0] and point 81 [foreignDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 22 [foreignDoc.body, 0, foreignDoc.body, 0] and point 82 [xmlDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 22 [foreignDoc.body, 0, foreignDoc.body, 0] and point 83 [doctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 22 [foreignDoc.body, 0, foreignDoc.body, 0] and point 84 [doctype, -17] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 22 [foreignDoc.body, 0, foreignDoc.body, 0] and point 85 [doctype, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 22 [foreignDoc.body, 0, foreignDoc.body, 0] and point 86 [foreignDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 22 [foreignDoc.body, 0, foreignDoc.body, 0] and point 87 [xmlDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
+Found 2376 tests; 2349 PASS, 27 FAIL, 0 TIMEOUT, 0 NOTRUN.
 PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 0 [paras[0].firstChild, -1] 
 PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 1 [paras[0].firstChild, 0] 
 PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 2 [paras[0].firstChild, 1] 
@@ -798,270 +270,6 @@
 PASS extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 86 [foreignDoctype, 0] 
 PASS extend() forwards with range 24 [paras[0], 0, paras[0], 1] and point 87 [xmlDoctype, 0] 
 PASS extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 87 [xmlDoctype, 0] 
-FAIL extend() with range 25 [detachedPara1, 0, detachedPara1, 0] and point 0 [paras[0].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 25 [detachedPara1, 0, detachedPara1, 0] and point 1 [paras[0].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 25 [detachedPara1, 0, detachedPara1, 0] and point 2 [paras[0].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 25 [detachedPara1, 0, detachedPara1, 0] and point 3 [paras[0].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 25 [detachedPara1, 0, detachedPara1, 0] and point 4 [paras[0].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 25 [detachedPara1, 0, detachedPara1, 0] and point 5 [paras[0].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 25 [detachedPara1, 0, detachedPara1, 0] and point 6 [paras[0].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 25 [detachedPara1, 0, detachedPara1, 0] and point 7 [paras[0].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 25 [detachedPara1, 0, detachedPara1, 0] and point 8 [paras[1].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 25 [detachedPara1, 0, detachedPara1, 0] and point 9 [paras[1].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 25 [detachedPara1, 0, detachedPara1, 0] and point 10 [paras[1].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 25 [detachedPara1, 0, detachedPara1, 0] and point 11 [paras[1].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 25 [detachedPara1, 0, detachedPara1, 0] and point 12 [paras[1].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 25 [detachedPara1, 0, detachedPara1, 0] and point 13 [paras[1].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 25 [detachedPara1, 0, detachedPara1, 0] and point 14 [paras[1].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 25 [detachedPara1, 0, detachedPara1, 0] and point 15 [paras[1].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 25 [detachedPara1, 0, detachedPara1, 0] and point 16 [detachedPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 25 [detachedPara1, 0, detachedPara1, 0] and point 17 [detachedPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 25 [detachedPara1, 0, detachedPara1, 0] and point 18 [detachedPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 25 [detachedPara1, 0, detachedPara1, 0] and point 19 [detachedPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 25 [detachedPara1, 0, detachedPara1, 0] and point 20 [foreignPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 25 [detachedPara1, 0, detachedPara1, 0] and point 21 [foreignPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 25 [detachedPara1, 0, detachedPara1, 0] and point 22 [foreignPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 25 [detachedPara1, 0, detachedPara1, 0] and point 23 [foreignPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 25 [detachedPara1, 0, detachedPara1, 0] and point 24 [document.documentElement, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 25 [detachedPara1, 0, detachedPara1, 0] and point 25 [document.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 25 [detachedPara1, 0, detachedPara1, 0] and point 26 [document.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 25 [detachedPara1, 0, detachedPara1, 0] and point 27 [document.documentElement, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 25 [detachedPara1, 0, detachedPara1, 0] and point 28 [document.documentElement, 7] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 25 [detachedPara1, 0, detachedPara1, 0] and point 29 [document.head, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 25 [detachedPara1, 0, detachedPara1, 0] and point 30 [document.body, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 25 [detachedPara1, 0, detachedPara1, 0] and point 31 [foreignDoc.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 25 [detachedPara1, 0, detachedPara1, 0] and point 32 [foreignDoc.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 25 [detachedPara1, 0, detachedPara1, 0] and point 33 [foreignDoc.head, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 25 [detachedPara1, 0, detachedPara1, 0] and point 34 [foreignDoc.body, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 25 [detachedPara1, 0, detachedPara1, 0] and point 35 [paras[0], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 25 [detachedPara1, 0, detachedPara1, 0] and point 36 [paras[0], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 25 [detachedPara1, 0, detachedPara1, 0] and point 37 [paras[0], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 25 [detachedPara1, 0, detachedPara1, 0] and point 38 [paras[1], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 25 [detachedPara1, 0, detachedPara1, 0] and point 39 [paras[1], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 25 [detachedPara1, 0, detachedPara1, 0] and point 40 [paras[1], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 25 [detachedPara1, 0, detachedPara1, 0] and point 41 [detachedPara1, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 25 [detachedPara1, 0, detachedPara1, 0] and point 42 [detachedPara1, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 25 [detachedPara1, 0, detachedPara1, 0] and point 43 [testDiv, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 25 [detachedPara1, 0, detachedPara1, 0] and point 44 [testDiv, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 25 [detachedPara1, 0, detachedPara1, 0] and point 45 [document, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 25 [detachedPara1, 0, detachedPara1, 0] and point 46 [document, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 25 [detachedPara1, 0, detachedPara1, 0] and point 47 [document, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 25 [detachedPara1, 0, detachedPara1, 0] and point 48 [document, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 25 [detachedPara1, 0, detachedPara1, 0] and point 49 [document, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 25 [detachedPara1, 0, detachedPara1, 0] and point 50 [comment, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 25 [detachedPara1, 0, detachedPara1, 0] and point 51 [comment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 25 [detachedPara1, 0, detachedPara1, 0] and point 52 [comment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 25 [detachedPara1, 0, detachedPara1, 0] and point 53 [comment, 96] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 25 [detachedPara1, 0, detachedPara1, 0] and point 54 [foreignDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 25 [detachedPara1, 0, detachedPara1, 0] and point 55 [foreignDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 25 [detachedPara1, 0, detachedPara1, 0] and point 56 [foreignComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 25 [detachedPara1, 0, detachedPara1, 0] and point 57 [foreignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 25 [detachedPara1, 0, detachedPara1, 0] and point 58 [foreignTextNode, 36] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 25 [detachedPara1, 0, detachedPara1, 0] and point 59 [xmlDoc, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 25 [detachedPara1, 0, detachedPara1, 0] and point 60 [xmlDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 25 [detachedPara1, 0, detachedPara1, 0] and point 61 [xmlDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 25 [detachedPara1, 0, detachedPara1, 0] and point 62 [xmlDoc, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 25 [detachedPara1, 0, detachedPara1, 0] and point 63 [xmlComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 25 [detachedPara1, 0, detachedPara1, 0] and point 64 [xmlComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 25 [detachedPara1, 0, detachedPara1, 0] and point 65 [processingInstruction, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 25 [detachedPara1, 0, detachedPara1, 0] and point 66 [processingInstruction, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 25 [detachedPara1, 0, detachedPara1, 0] and point 67 [processingInstruction, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 25 [detachedPara1, 0, detachedPara1, 0] and point 68 [detachedTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 25 [detachedPara1, 0, detachedPara1, 0] and point 69 [detachedTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 25 [detachedPara1, 0, detachedPara1, 0] and point 70 [detachedForeignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 25 [detachedPara1, 0, detachedPara1, 0] and point 71 [detachedForeignTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 25 [detachedPara1, 0, detachedPara1, 0] and point 72 [detachedXmlTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 25 [detachedPara1, 0, detachedPara1, 0] and point 73 [detachedXmlTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 25 [detachedPara1, 0, detachedPara1, 0] and point 74 [detachedProcessingInstruction, 12] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 25 [detachedPara1, 0, detachedPara1, 0] and point 75 [detachedComment, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 25 [detachedPara1, 0, detachedPara1, 0] and point 76 [detachedComment, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 25 [detachedPara1, 0, detachedPara1, 0] and point 77 [detachedForeignComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 25 [detachedPara1, 0, detachedPara1, 0] and point 78 [detachedForeignComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 25 [detachedPara1, 0, detachedPara1, 0] and point 79 [detachedXmlComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 25 [detachedPara1, 0, detachedPara1, 0] and point 80 [docfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 25 [detachedPara1, 0, detachedPara1, 0] and point 81 [foreignDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 25 [detachedPara1, 0, detachedPara1, 0] and point 82 [xmlDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 25 [detachedPara1, 0, detachedPara1, 0] and point 83 [doctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 25 [detachedPara1, 0, detachedPara1, 0] and point 84 [doctype, -17] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 25 [detachedPara1, 0, detachedPara1, 0] and point 85 [doctype, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 25 [detachedPara1, 0, detachedPara1, 0] and point 86 [foreignDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 25 [detachedPara1, 0, detachedPara1, 0] and point 87 [xmlDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 0 [paras[0].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 0 [paras[0].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 1 [paras[0].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 1 [paras[0].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 2 [paras[0].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 2 [paras[0].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 3 [paras[0].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 3 [paras[0].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 4 [paras[0].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 4 [paras[0].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 5 [paras[0].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 5 [paras[0].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 6 [paras[0].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 6 [paras[0].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 7 [paras[0].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 7 [paras[0].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 8 [paras[1].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 8 [paras[1].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 9 [paras[1].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 9 [paras[1].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 10 [paras[1].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 10 [paras[1].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 11 [paras[1].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 11 [paras[1].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 12 [paras[1].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 12 [paras[1].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 13 [paras[1].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 13 [paras[1].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 14 [paras[1].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 14 [paras[1].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 15 [paras[1].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 15 [paras[1].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 16 [detachedPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 16 [detachedPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 17 [detachedPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 17 [detachedPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 18 [detachedPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 18 [detachedPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 19 [detachedPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 19 [detachedPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 20 [foreignPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 20 [foreignPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 21 [foreignPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 21 [foreignPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 22 [foreignPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 22 [foreignPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 23 [foreignPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 23 [foreignPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 24 [document.documentElement, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 24 [document.documentElement, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 25 [document.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 25 [document.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 26 [document.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 26 [document.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 27 [document.documentElement, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 27 [document.documentElement, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 28 [document.documentElement, 7] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 28 [document.documentElement, 7] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 29 [document.head, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 29 [document.head, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 30 [document.body, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 30 [document.body, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 31 [foreignDoc.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 31 [foreignDoc.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 32 [foreignDoc.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 32 [foreignDoc.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 33 [foreignDoc.head, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 33 [foreignDoc.head, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 34 [foreignDoc.body, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 34 [foreignDoc.body, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 35 [paras[0], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 35 [paras[0], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 36 [paras[0], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 36 [paras[0], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 37 [paras[0], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 37 [paras[0], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 38 [paras[1], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 38 [paras[1], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 39 [paras[1], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 39 [paras[1], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 40 [paras[1], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 40 [paras[1], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 41 [detachedPara1, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 41 [detachedPara1, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 42 [detachedPara1, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 42 [detachedPara1, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 43 [testDiv, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 43 [testDiv, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 44 [testDiv, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 44 [testDiv, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 45 [document, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 45 [document, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 46 [document, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 46 [document, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 47 [document, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 47 [document, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 48 [document, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 48 [document, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 49 [document, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 49 [document, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 50 [comment, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 50 [comment, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 51 [comment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 51 [comment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 52 [comment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 52 [comment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 53 [comment, 96] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 53 [comment, 96] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 54 [foreignDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 54 [foreignDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 55 [foreignDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 55 [foreignDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 56 [foreignComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 56 [foreignComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 57 [foreignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 57 [foreignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 58 [foreignTextNode, 36] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 58 [foreignTextNode, 36] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 59 [xmlDoc, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 59 [xmlDoc, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 60 [xmlDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 60 [xmlDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 61 [xmlDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 61 [xmlDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 62 [xmlDoc, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 62 [xmlDoc, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 63 [xmlComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 63 [xmlComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 64 [xmlComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 64 [xmlComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 65 [processingInstruction, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 65 [processingInstruction, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 66 [processingInstruction, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 66 [processingInstruction, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 67 [processingInstruction, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 67 [processingInstruction, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 68 [detachedTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 68 [detachedTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 69 [detachedTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 69 [detachedTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 70 [detachedForeignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 70 [detachedForeignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 71 [detachedForeignTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 71 [detachedForeignTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 72 [detachedXmlTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 72 [detachedXmlTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 73 [detachedXmlTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 73 [detachedXmlTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 74 [detachedProcessingInstruction, 12] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 74 [detachedProcessingInstruction, 12] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 75 [detachedComment, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 75 [detachedComment, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 76 [detachedComment, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 76 [detachedComment, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 77 [detachedForeignComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 77 [detachedForeignComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 78 [detachedForeignComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 78 [detachedForeignComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 79 [detachedXmlComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 79 [detachedXmlComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 80 [docfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 80 [docfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 81 [foreignDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 81 [foreignDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 82 [xmlDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 82 [xmlDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 83 [doctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 83 [doctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 84 [doctype, -17] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 84 [doctype, -17] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 85 [doctype, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 85 [doctype, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 86 [foreignDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 86 [foreignDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 87 [xmlDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 26 [detachedPara1, 0, detachedPara1, 1] and point 87 [xmlDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
 PASS extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 0 [paras[0].firstChild, -1] 
 PASS extend() backwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 0 [paras[0].firstChild, -1] 
 PASS extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 1 [paras[0].firstChild, 0] 
@@ -2322,182 +1530,6 @@
 PASS extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 86 [foreignDoctype, 0] 
 PASS extend() forwards with range 33 [document.documentElement, 1, document.body, 0] and point 87 [xmlDoctype, 0] 
 PASS extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 87 [xmlDoctype, 0] 
-FAIL extend() forwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 0 [paras[0].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 0 [paras[0].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 1 [paras[0].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 1 [paras[0].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 2 [paras[0].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 2 [paras[0].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 3 [paras[0].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 3 [paras[0].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 4 [paras[0].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 4 [paras[0].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 5 [paras[0].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 5 [paras[0].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 6 [paras[0].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 6 [paras[0].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 7 [paras[0].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 7 [paras[0].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 8 [paras[1].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 8 [paras[1].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 9 [paras[1].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 9 [paras[1].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 10 [paras[1].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 10 [paras[1].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 11 [paras[1].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 11 [paras[1].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 12 [paras[1].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 12 [paras[1].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 13 [paras[1].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 13 [paras[1].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 14 [paras[1].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 14 [paras[1].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 15 [paras[1].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 15 [paras[1].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 16 [detachedPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 16 [detachedPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 17 [detachedPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 17 [detachedPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 18 [detachedPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 18 [detachedPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 19 [detachedPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 19 [detachedPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 20 [foreignPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 20 [foreignPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 21 [foreignPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 21 [foreignPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 22 [foreignPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 22 [foreignPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 23 [foreignPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 23 [foreignPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 24 [document.documentElement, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 24 [document.documentElement, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 25 [document.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 25 [document.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 26 [document.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 26 [document.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 27 [document.documentElement, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 27 [document.documentElement, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 28 [document.documentElement, 7] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 28 [document.documentElement, 7] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 29 [document.head, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 29 [document.head, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 30 [document.body, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 30 [document.body, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 31 [foreignDoc.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 31 [foreignDoc.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 32 [foreignDoc.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 32 [foreignDoc.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 33 [foreignDoc.head, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 33 [foreignDoc.head, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 34 [foreignDoc.body, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 34 [foreignDoc.body, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 35 [paras[0], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 35 [paras[0], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 36 [paras[0], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 36 [paras[0], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 37 [paras[0], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 37 [paras[0], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 38 [paras[1], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 38 [paras[1], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 39 [paras[1], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 39 [paras[1], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 40 [paras[1], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 40 [paras[1], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 41 [detachedPara1, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 41 [detachedPara1, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 42 [detachedPara1, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 42 [detachedPara1, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 43 [testDiv, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 43 [testDiv, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 44 [testDiv, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 44 [testDiv, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 45 [document, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 45 [document, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 46 [document, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 46 [document, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 47 [document, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 47 [document, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 48 [document, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 48 [document, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 49 [document, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 49 [document, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 50 [comment, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 50 [comment, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 51 [comment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 51 [comment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 52 [comment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 52 [comment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 53 [comment, 96] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 53 [comment, 96] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 54 [foreignDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 54 [foreignDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 55 [foreignDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 55 [foreignDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 56 [foreignComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 56 [foreignComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 57 [foreignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 57 [foreignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 58 [foreignTextNode, 36] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 58 [foreignTextNode, 36] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 59 [xmlDoc, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 59 [xmlDoc, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 60 [xmlDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 60 [xmlDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 61 [xmlDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 61 [xmlDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 62 [xmlDoc, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 62 [xmlDoc, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 63 [xmlComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 63 [xmlComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 64 [xmlComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 64 [xmlComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 65 [processingInstruction, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 65 [processingInstruction, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 66 [processingInstruction, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 66 [processingInstruction, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 67 [processingInstruction, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 67 [processingInstruction, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 68 [detachedTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 68 [detachedTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 69 [detachedTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 69 [detachedTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 70 [detachedForeignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 70 [detachedForeignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 71 [detachedForeignTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 71 [detachedForeignTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 72 [detachedXmlTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 72 [detachedXmlTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 73 [detachedXmlTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 73 [detachedXmlTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 74 [detachedProcessingInstruction, 12] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 74 [detachedProcessingInstruction, 12] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 75 [detachedComment, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 75 [detachedComment, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 76 [detachedComment, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 76 [detachedComment, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 77 [detachedForeignComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 77 [detachedForeignComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 78 [detachedForeignComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 78 [detachedForeignComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 79 [detachedXmlComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 79 [detachedXmlComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 80 [docfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 80 [docfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 81 [foreignDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 81 [foreignDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 82 [xmlDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 82 [xmlDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 83 [doctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 83 [doctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 84 [doctype, -17] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 84 [doctype, -17] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 85 [doctype, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 85 [doctype, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 86 [foreignDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 86 [foreignDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 87 [xmlDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] and point 87 [xmlDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
 PASS extend() forwards with range 35 [document, 0, document, 1] and point 0 [paras[0].firstChild, -1] 
 PASS extend() backwards with range 35 [document, 0, document, 1] and point 0 [paras[0].firstChild, -1] 
 PASS extend() forwards with range 35 [document, 0, document, 1] and point 1 [paras[0].firstChild, 0] 
diff --git a/third_party/WebKit/LayoutTests/external/wpt/selection/extend-40-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/selection/extend-40-expected.txt
index 0105fe4..7684a3d 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/selection/extend-40-expected.txt
+++ b/third_party/WebKit/LayoutTests/external/wpt/selection/extend-40-expected.txt
@@ -1,357 +1,5 @@
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
-CONSOLE ERROR: line 944: The given range isn't in document.
 This is a testharness.js-based test.
-Found 2552 tests; 174 PASS, 2378 FAIL, 0 TIMEOUT, 0 NOTRUN.
+Found 176 tests; 174 PASS, 2 FAIL, 0 TIMEOUT, 0 NOTRUN.
 PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 0 [paras[0].firstChild, -1] 
 PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 0 [paras[0].firstChild, -1] 
 PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 1 [paras[0].firstChild, 0] 
@@ -532,2381 +180,5 @@
 PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 86 [foreignDoctype, 0] 
 PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 87 [xmlDoctype, 0] 
 PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 87 [xmlDoctype, 0] 
-FAIL extend() with range 41 [foreignDoc, 0, foreignDoc, 0] and point 0 [paras[0].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 41 [foreignDoc, 0, foreignDoc, 0] and point 1 [paras[0].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 41 [foreignDoc, 0, foreignDoc, 0] and point 2 [paras[0].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 41 [foreignDoc, 0, foreignDoc, 0] and point 3 [paras[0].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 41 [foreignDoc, 0, foreignDoc, 0] and point 4 [paras[0].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 41 [foreignDoc, 0, foreignDoc, 0] and point 5 [paras[0].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 41 [foreignDoc, 0, foreignDoc, 0] and point 6 [paras[0].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 41 [foreignDoc, 0, foreignDoc, 0] and point 7 [paras[0].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 41 [foreignDoc, 0, foreignDoc, 0] and point 8 [paras[1].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 41 [foreignDoc, 0, foreignDoc, 0] and point 9 [paras[1].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 41 [foreignDoc, 0, foreignDoc, 0] and point 10 [paras[1].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 41 [foreignDoc, 0, foreignDoc, 0] and point 11 [paras[1].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 41 [foreignDoc, 0, foreignDoc, 0] and point 12 [paras[1].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 41 [foreignDoc, 0, foreignDoc, 0] and point 13 [paras[1].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 41 [foreignDoc, 0, foreignDoc, 0] and point 14 [paras[1].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 41 [foreignDoc, 0, foreignDoc, 0] and point 15 [paras[1].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 41 [foreignDoc, 0, foreignDoc, 0] and point 16 [detachedPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 41 [foreignDoc, 0, foreignDoc, 0] and point 17 [detachedPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 41 [foreignDoc, 0, foreignDoc, 0] and point 18 [detachedPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 41 [foreignDoc, 0, foreignDoc, 0] and point 19 [detachedPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 41 [foreignDoc, 0, foreignDoc, 0] and point 20 [foreignPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 41 [foreignDoc, 0, foreignDoc, 0] and point 21 [foreignPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 41 [foreignDoc, 0, foreignDoc, 0] and point 22 [foreignPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 41 [foreignDoc, 0, foreignDoc, 0] and point 23 [foreignPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 41 [foreignDoc, 0, foreignDoc, 0] and point 24 [document.documentElement, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 41 [foreignDoc, 0, foreignDoc, 0] and point 25 [document.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 41 [foreignDoc, 0, foreignDoc, 0] and point 26 [document.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 41 [foreignDoc, 0, foreignDoc, 0] and point 27 [document.documentElement, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 41 [foreignDoc, 0, foreignDoc, 0] and point 28 [document.documentElement, 7] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 41 [foreignDoc, 0, foreignDoc, 0] and point 29 [document.head, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 41 [foreignDoc, 0, foreignDoc, 0] and point 30 [document.body, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 41 [foreignDoc, 0, foreignDoc, 0] and point 31 [foreignDoc.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 41 [foreignDoc, 0, foreignDoc, 0] and point 32 [foreignDoc.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 41 [foreignDoc, 0, foreignDoc, 0] and point 33 [foreignDoc.head, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 41 [foreignDoc, 0, foreignDoc, 0] and point 34 [foreignDoc.body, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 41 [foreignDoc, 0, foreignDoc, 0] and point 35 [paras[0], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 41 [foreignDoc, 0, foreignDoc, 0] and point 36 [paras[0], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 41 [foreignDoc, 0, foreignDoc, 0] and point 37 [paras[0], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 41 [foreignDoc, 0, foreignDoc, 0] and point 38 [paras[1], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 41 [foreignDoc, 0, foreignDoc, 0] and point 39 [paras[1], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 41 [foreignDoc, 0, foreignDoc, 0] and point 40 [paras[1], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 41 [foreignDoc, 0, foreignDoc, 0] and point 41 [detachedPara1, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 41 [foreignDoc, 0, foreignDoc, 0] and point 42 [detachedPara1, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 41 [foreignDoc, 0, foreignDoc, 0] and point 43 [testDiv, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 41 [foreignDoc, 0, foreignDoc, 0] and point 44 [testDiv, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 41 [foreignDoc, 0, foreignDoc, 0] and point 45 [document, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 41 [foreignDoc, 0, foreignDoc, 0] and point 46 [document, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 41 [foreignDoc, 0, foreignDoc, 0] and point 47 [document, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 41 [foreignDoc, 0, foreignDoc, 0] and point 48 [document, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 41 [foreignDoc, 0, foreignDoc, 0] and point 49 [document, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 41 [foreignDoc, 0, foreignDoc, 0] and point 50 [comment, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 41 [foreignDoc, 0, foreignDoc, 0] and point 51 [comment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 41 [foreignDoc, 0, foreignDoc, 0] and point 52 [comment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 41 [foreignDoc, 0, foreignDoc, 0] and point 53 [comment, 96] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 41 [foreignDoc, 0, foreignDoc, 0] and point 54 [foreignDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 41 [foreignDoc, 0, foreignDoc, 0] and point 55 [foreignDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 41 [foreignDoc, 0, foreignDoc, 0] and point 56 [foreignComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 41 [foreignDoc, 0, foreignDoc, 0] and point 57 [foreignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 41 [foreignDoc, 0, foreignDoc, 0] and point 58 [foreignTextNode, 36] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 41 [foreignDoc, 0, foreignDoc, 0] and point 59 [xmlDoc, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 41 [foreignDoc, 0, foreignDoc, 0] and point 60 [xmlDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 41 [foreignDoc, 0, foreignDoc, 0] and point 61 [xmlDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 41 [foreignDoc, 0, foreignDoc, 0] and point 62 [xmlDoc, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 41 [foreignDoc, 0, foreignDoc, 0] and point 63 [xmlComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 41 [foreignDoc, 0, foreignDoc, 0] and point 64 [xmlComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 41 [foreignDoc, 0, foreignDoc, 0] and point 65 [processingInstruction, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 41 [foreignDoc, 0, foreignDoc, 0] and point 66 [processingInstruction, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 41 [foreignDoc, 0, foreignDoc, 0] and point 67 [processingInstruction, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 41 [foreignDoc, 0, foreignDoc, 0] and point 68 [detachedTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 41 [foreignDoc, 0, foreignDoc, 0] and point 69 [detachedTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 41 [foreignDoc, 0, foreignDoc, 0] and point 70 [detachedForeignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 41 [foreignDoc, 0, foreignDoc, 0] and point 71 [detachedForeignTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 41 [foreignDoc, 0, foreignDoc, 0] and point 72 [detachedXmlTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 41 [foreignDoc, 0, foreignDoc, 0] and point 73 [detachedXmlTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 41 [foreignDoc, 0, foreignDoc, 0] and point 74 [detachedProcessingInstruction, 12] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 41 [foreignDoc, 0, foreignDoc, 0] and point 75 [detachedComment, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 41 [foreignDoc, 0, foreignDoc, 0] and point 76 [detachedComment, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 41 [foreignDoc, 0, foreignDoc, 0] and point 77 [detachedForeignComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 41 [foreignDoc, 0, foreignDoc, 0] and point 78 [detachedForeignComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 41 [foreignDoc, 0, foreignDoc, 0] and point 79 [detachedXmlComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 41 [foreignDoc, 0, foreignDoc, 0] and point 80 [docfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 41 [foreignDoc, 0, foreignDoc, 0] and point 81 [foreignDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 41 [foreignDoc, 0, foreignDoc, 0] and point 82 [xmlDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 41 [foreignDoc, 0, foreignDoc, 0] and point 83 [doctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 41 [foreignDoc, 0, foreignDoc, 0] and point 84 [doctype, -17] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 41 [foreignDoc, 0, foreignDoc, 0] and point 85 [doctype, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 41 [foreignDoc, 0, foreignDoc, 0] and point 86 [foreignDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 41 [foreignDoc, 0, foreignDoc, 0] and point 87 [xmlDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 0 [paras[0].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 0 [paras[0].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 1 [paras[0].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 1 [paras[0].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 2 [paras[0].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 2 [paras[0].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 3 [paras[0].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 3 [paras[0].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 4 [paras[0].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 4 [paras[0].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 5 [paras[0].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 5 [paras[0].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 6 [paras[0].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 6 [paras[0].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 7 [paras[0].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 7 [paras[0].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 8 [paras[1].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 8 [paras[1].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 9 [paras[1].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 9 [paras[1].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 10 [paras[1].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 10 [paras[1].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 11 [paras[1].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 11 [paras[1].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 12 [paras[1].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 12 [paras[1].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 13 [paras[1].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 13 [paras[1].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 14 [paras[1].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 14 [paras[1].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 15 [paras[1].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 15 [paras[1].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 16 [detachedPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 16 [detachedPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 17 [detachedPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 17 [detachedPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 18 [detachedPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 18 [detachedPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 19 [detachedPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 19 [detachedPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 20 [foreignPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 20 [foreignPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 21 [foreignPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 21 [foreignPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 22 [foreignPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 22 [foreignPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 23 [foreignPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 23 [foreignPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 24 [document.documentElement, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 24 [document.documentElement, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 25 [document.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 25 [document.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 26 [document.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 26 [document.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 27 [document.documentElement, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 27 [document.documentElement, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 28 [document.documentElement, 7] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 28 [document.documentElement, 7] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 29 [document.head, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 29 [document.head, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 30 [document.body, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 30 [document.body, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 31 [foreignDoc.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 31 [foreignDoc.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 32 [foreignDoc.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 32 [foreignDoc.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 33 [foreignDoc.head, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 33 [foreignDoc.head, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 34 [foreignDoc.body, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 34 [foreignDoc.body, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 35 [paras[0], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 35 [paras[0], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 36 [paras[0], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 36 [paras[0], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 37 [paras[0], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 37 [paras[0], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 38 [paras[1], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 38 [paras[1], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 39 [paras[1], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 39 [paras[1], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 40 [paras[1], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 40 [paras[1], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 41 [detachedPara1, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 41 [detachedPara1, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 42 [detachedPara1, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 42 [detachedPara1, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 43 [testDiv, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 43 [testDiv, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 44 [testDiv, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 44 [testDiv, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 45 [document, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 45 [document, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 46 [document, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 46 [document, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 47 [document, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 47 [document, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 48 [document, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 48 [document, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 49 [document, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 49 [document, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 50 [comment, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 50 [comment, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 51 [comment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 51 [comment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 52 [comment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 52 [comment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 53 [comment, 96] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 53 [comment, 96] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 54 [foreignDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 54 [foreignDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 55 [foreignDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 55 [foreignDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 56 [foreignComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 56 [foreignComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 57 [foreignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 57 [foreignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 58 [foreignTextNode, 36] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 58 [foreignTextNode, 36] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 59 [xmlDoc, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 59 [xmlDoc, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 60 [xmlDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 60 [xmlDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 61 [xmlDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 61 [xmlDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 62 [xmlDoc, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 62 [xmlDoc, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 63 [xmlComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 63 [xmlComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 64 [xmlComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 64 [xmlComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 65 [processingInstruction, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 65 [processingInstruction, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 66 [processingInstruction, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 66 [processingInstruction, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 67 [processingInstruction, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 67 [processingInstruction, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 68 [detachedTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 68 [detachedTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 69 [detachedTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 69 [detachedTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 70 [detachedForeignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 70 [detachedForeignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 71 [detachedForeignTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 71 [detachedForeignTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 72 [detachedXmlTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 72 [detachedXmlTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 73 [detachedXmlTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 73 [detachedXmlTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 74 [detachedProcessingInstruction, 12] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 74 [detachedProcessingInstruction, 12] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 75 [detachedComment, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 75 [detachedComment, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 76 [detachedComment, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 76 [detachedComment, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 77 [detachedForeignComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 77 [detachedForeignComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 78 [detachedForeignComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 78 [detachedForeignComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 79 [detachedXmlComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 79 [detachedXmlComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 80 [docfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 80 [docfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 81 [foreignDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 81 [foreignDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 82 [xmlDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 82 [xmlDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 83 [doctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 83 [doctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 84 [doctype, -17] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 84 [doctype, -17] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 85 [doctype, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 85 [doctype, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 86 [foreignDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 86 [foreignDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 87 [xmlDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 42 [foreignDoc, 1, foreignComment, 2] and point 87 [xmlDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 0 [paras[0].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 0 [paras[0].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 1 [paras[0].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 1 [paras[0].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 2 [paras[0].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 2 [paras[0].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 3 [paras[0].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 3 [paras[0].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 4 [paras[0].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 4 [paras[0].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 5 [paras[0].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 5 [paras[0].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 6 [paras[0].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 6 [paras[0].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 7 [paras[0].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 7 [paras[0].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 8 [paras[1].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 8 [paras[1].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 9 [paras[1].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 9 [paras[1].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 10 [paras[1].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 10 [paras[1].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 11 [paras[1].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 11 [paras[1].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 12 [paras[1].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 12 [paras[1].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 13 [paras[1].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 13 [paras[1].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 14 [paras[1].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 14 [paras[1].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 15 [paras[1].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 15 [paras[1].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 16 [detachedPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 16 [detachedPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 17 [detachedPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 17 [detachedPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 18 [detachedPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 18 [detachedPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 19 [detachedPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 19 [detachedPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 20 [foreignPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 20 [foreignPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 21 [foreignPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 21 [foreignPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 22 [foreignPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 22 [foreignPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 23 [foreignPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 23 [foreignPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 24 [document.documentElement, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 24 [document.documentElement, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 25 [document.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 25 [document.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 26 [document.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 26 [document.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 27 [document.documentElement, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 27 [document.documentElement, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 28 [document.documentElement, 7] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 28 [document.documentElement, 7] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 29 [document.head, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 29 [document.head, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 30 [document.body, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 30 [document.body, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 31 [foreignDoc.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 31 [foreignDoc.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 32 [foreignDoc.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 32 [foreignDoc.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 33 [foreignDoc.head, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 33 [foreignDoc.head, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 34 [foreignDoc.body, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 34 [foreignDoc.body, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 35 [paras[0], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 35 [paras[0], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 36 [paras[0], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 36 [paras[0], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 37 [paras[0], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 37 [paras[0], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 38 [paras[1], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 38 [paras[1], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 39 [paras[1], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 39 [paras[1], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 40 [paras[1], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 40 [paras[1], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 41 [detachedPara1, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 41 [detachedPara1, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 42 [detachedPara1, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 42 [detachedPara1, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 43 [testDiv, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 43 [testDiv, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 44 [testDiv, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 44 [testDiv, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 45 [document, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 45 [document, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 46 [document, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 46 [document, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 47 [document, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 47 [document, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 48 [document, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 48 [document, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 49 [document, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 49 [document, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 50 [comment, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 50 [comment, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 51 [comment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 51 [comment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 52 [comment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 52 [comment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 53 [comment, 96] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 53 [comment, 96] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 54 [foreignDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 54 [foreignDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 55 [foreignDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 55 [foreignDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 56 [foreignComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 56 [foreignComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 57 [foreignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 57 [foreignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 58 [foreignTextNode, 36] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 58 [foreignTextNode, 36] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 59 [xmlDoc, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 59 [xmlDoc, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 60 [xmlDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 60 [xmlDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 61 [xmlDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 61 [xmlDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 62 [xmlDoc, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 62 [xmlDoc, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 63 [xmlComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 63 [xmlComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 64 [xmlComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 64 [xmlComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 65 [processingInstruction, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 65 [processingInstruction, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 66 [processingInstruction, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 66 [processingInstruction, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 67 [processingInstruction, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 67 [processingInstruction, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 68 [detachedTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 68 [detachedTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 69 [detachedTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 69 [detachedTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 70 [detachedForeignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 70 [detachedForeignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 71 [detachedForeignTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 71 [detachedForeignTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 72 [detachedXmlTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 72 [detachedXmlTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 73 [detachedXmlTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 73 [detachedXmlTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 74 [detachedProcessingInstruction, 12] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 74 [detachedProcessingInstruction, 12] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 75 [detachedComment, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 75 [detachedComment, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 76 [detachedComment, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 76 [detachedComment, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 77 [detachedForeignComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 77 [detachedForeignComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 78 [detachedForeignComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 78 [detachedForeignComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 79 [detachedXmlComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 79 [detachedXmlComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 80 [docfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 80 [docfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 81 [foreignDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 81 [foreignDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 82 [xmlDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 82 [xmlDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 83 [doctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 83 [doctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 84 [doctype, -17] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 84 [doctype, -17] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 85 [doctype, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 85 [doctype, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 86 [foreignDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 86 [foreignDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 87 [xmlDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 43 [foreignDoc.body, 0, foreignTextNode, 36] and point 87 [xmlDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 44 [xmlDoc, 0, xmlDoc, 0] and point 0 [paras[0].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 44 [xmlDoc, 0, xmlDoc, 0] and point 1 [paras[0].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 44 [xmlDoc, 0, xmlDoc, 0] and point 2 [paras[0].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 44 [xmlDoc, 0, xmlDoc, 0] and point 3 [paras[0].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 44 [xmlDoc, 0, xmlDoc, 0] and point 4 [paras[0].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 44 [xmlDoc, 0, xmlDoc, 0] and point 5 [paras[0].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 44 [xmlDoc, 0, xmlDoc, 0] and point 6 [paras[0].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 44 [xmlDoc, 0, xmlDoc, 0] and point 7 [paras[0].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 44 [xmlDoc, 0, xmlDoc, 0] and point 8 [paras[1].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 44 [xmlDoc, 0, xmlDoc, 0] and point 9 [paras[1].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 44 [xmlDoc, 0, xmlDoc, 0] and point 10 [paras[1].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 44 [xmlDoc, 0, xmlDoc, 0] and point 11 [paras[1].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 44 [xmlDoc, 0, xmlDoc, 0] and point 12 [paras[1].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 44 [xmlDoc, 0, xmlDoc, 0] and point 13 [paras[1].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 44 [xmlDoc, 0, xmlDoc, 0] and point 14 [paras[1].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 44 [xmlDoc, 0, xmlDoc, 0] and point 15 [paras[1].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 44 [xmlDoc, 0, xmlDoc, 0] and point 16 [detachedPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 44 [xmlDoc, 0, xmlDoc, 0] and point 17 [detachedPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 44 [xmlDoc, 0, xmlDoc, 0] and point 18 [detachedPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 44 [xmlDoc, 0, xmlDoc, 0] and point 19 [detachedPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 44 [xmlDoc, 0, xmlDoc, 0] and point 20 [foreignPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 44 [xmlDoc, 0, xmlDoc, 0] and point 21 [foreignPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 44 [xmlDoc, 0, xmlDoc, 0] and point 22 [foreignPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 44 [xmlDoc, 0, xmlDoc, 0] and point 23 [foreignPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 44 [xmlDoc, 0, xmlDoc, 0] and point 24 [document.documentElement, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 44 [xmlDoc, 0, xmlDoc, 0] and point 25 [document.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 44 [xmlDoc, 0, xmlDoc, 0] and point 26 [document.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 44 [xmlDoc, 0, xmlDoc, 0] and point 27 [document.documentElement, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 44 [xmlDoc, 0, xmlDoc, 0] and point 28 [document.documentElement, 7] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 44 [xmlDoc, 0, xmlDoc, 0] and point 29 [document.head, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 44 [xmlDoc, 0, xmlDoc, 0] and point 30 [document.body, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 44 [xmlDoc, 0, xmlDoc, 0] and point 31 [foreignDoc.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 44 [xmlDoc, 0, xmlDoc, 0] and point 32 [foreignDoc.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 44 [xmlDoc, 0, xmlDoc, 0] and point 33 [foreignDoc.head, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 44 [xmlDoc, 0, xmlDoc, 0] and point 34 [foreignDoc.body, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 44 [xmlDoc, 0, xmlDoc, 0] and point 35 [paras[0], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 44 [xmlDoc, 0, xmlDoc, 0] and point 36 [paras[0], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 44 [xmlDoc, 0, xmlDoc, 0] and point 37 [paras[0], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 44 [xmlDoc, 0, xmlDoc, 0] and point 38 [paras[1], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 44 [xmlDoc, 0, xmlDoc, 0] and point 39 [paras[1], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 44 [xmlDoc, 0, xmlDoc, 0] and point 40 [paras[1], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 44 [xmlDoc, 0, xmlDoc, 0] and point 41 [detachedPara1, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 44 [xmlDoc, 0, xmlDoc, 0] and point 42 [detachedPara1, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 44 [xmlDoc, 0, xmlDoc, 0] and point 43 [testDiv, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 44 [xmlDoc, 0, xmlDoc, 0] and point 44 [testDiv, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 44 [xmlDoc, 0, xmlDoc, 0] and point 45 [document, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 44 [xmlDoc, 0, xmlDoc, 0] and point 46 [document, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 44 [xmlDoc, 0, xmlDoc, 0] and point 47 [document, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 44 [xmlDoc, 0, xmlDoc, 0] and point 48 [document, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 44 [xmlDoc, 0, xmlDoc, 0] and point 49 [document, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 44 [xmlDoc, 0, xmlDoc, 0] and point 50 [comment, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 44 [xmlDoc, 0, xmlDoc, 0] and point 51 [comment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 44 [xmlDoc, 0, xmlDoc, 0] and point 52 [comment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 44 [xmlDoc, 0, xmlDoc, 0] and point 53 [comment, 96] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 44 [xmlDoc, 0, xmlDoc, 0] and point 54 [foreignDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 44 [xmlDoc, 0, xmlDoc, 0] and point 55 [foreignDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 44 [xmlDoc, 0, xmlDoc, 0] and point 56 [foreignComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 44 [xmlDoc, 0, xmlDoc, 0] and point 57 [foreignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 44 [xmlDoc, 0, xmlDoc, 0] and point 58 [foreignTextNode, 36] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 44 [xmlDoc, 0, xmlDoc, 0] and point 59 [xmlDoc, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 44 [xmlDoc, 0, xmlDoc, 0] and point 60 [xmlDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 44 [xmlDoc, 0, xmlDoc, 0] and point 61 [xmlDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 44 [xmlDoc, 0, xmlDoc, 0] and point 62 [xmlDoc, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 44 [xmlDoc, 0, xmlDoc, 0] and point 63 [xmlComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 44 [xmlDoc, 0, xmlDoc, 0] and point 64 [xmlComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 44 [xmlDoc, 0, xmlDoc, 0] and point 65 [processingInstruction, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 44 [xmlDoc, 0, xmlDoc, 0] and point 66 [processingInstruction, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 44 [xmlDoc, 0, xmlDoc, 0] and point 67 [processingInstruction, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 44 [xmlDoc, 0, xmlDoc, 0] and point 68 [detachedTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 44 [xmlDoc, 0, xmlDoc, 0] and point 69 [detachedTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 44 [xmlDoc, 0, xmlDoc, 0] and point 70 [detachedForeignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 44 [xmlDoc, 0, xmlDoc, 0] and point 71 [detachedForeignTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 44 [xmlDoc, 0, xmlDoc, 0] and point 72 [detachedXmlTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 44 [xmlDoc, 0, xmlDoc, 0] and point 73 [detachedXmlTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 44 [xmlDoc, 0, xmlDoc, 0] and point 74 [detachedProcessingInstruction, 12] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 44 [xmlDoc, 0, xmlDoc, 0] and point 75 [detachedComment, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 44 [xmlDoc, 0, xmlDoc, 0] and point 76 [detachedComment, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 44 [xmlDoc, 0, xmlDoc, 0] and point 77 [detachedForeignComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 44 [xmlDoc, 0, xmlDoc, 0] and point 78 [detachedForeignComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 44 [xmlDoc, 0, xmlDoc, 0] and point 79 [detachedXmlComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 44 [xmlDoc, 0, xmlDoc, 0] and point 80 [docfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 44 [xmlDoc, 0, xmlDoc, 0] and point 81 [foreignDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 44 [xmlDoc, 0, xmlDoc, 0] and point 82 [xmlDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 44 [xmlDoc, 0, xmlDoc, 0] and point 83 [doctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 44 [xmlDoc, 0, xmlDoc, 0] and point 84 [doctype, -17] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 44 [xmlDoc, 0, xmlDoc, 0] and point 85 [doctype, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 44 [xmlDoc, 0, xmlDoc, 0] and point 86 [foreignDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 44 [xmlDoc, 0, xmlDoc, 0] and point 87 [xmlDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 0 [paras[0].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 0 [paras[0].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 1 [paras[0].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 1 [paras[0].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 2 [paras[0].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 2 [paras[0].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 3 [paras[0].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 3 [paras[0].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 4 [paras[0].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 4 [paras[0].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 5 [paras[0].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 5 [paras[0].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 6 [paras[0].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 6 [paras[0].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 7 [paras[0].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 7 [paras[0].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 8 [paras[1].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 8 [paras[1].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 9 [paras[1].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 9 [paras[1].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 10 [paras[1].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 10 [paras[1].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 11 [paras[1].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 11 [paras[1].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 12 [paras[1].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 12 [paras[1].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 13 [paras[1].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 13 [paras[1].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 14 [paras[1].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 14 [paras[1].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 15 [paras[1].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 15 [paras[1].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 16 [detachedPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 16 [detachedPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 17 [detachedPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 17 [detachedPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 18 [detachedPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 18 [detachedPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 19 [detachedPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 19 [detachedPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 20 [foreignPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 20 [foreignPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 21 [foreignPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 21 [foreignPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 22 [foreignPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 22 [foreignPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 23 [foreignPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 23 [foreignPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 24 [document.documentElement, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 24 [document.documentElement, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 25 [document.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 25 [document.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 26 [document.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 26 [document.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 27 [document.documentElement, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 27 [document.documentElement, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 28 [document.documentElement, 7] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 28 [document.documentElement, 7] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 29 [document.head, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 29 [document.head, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 30 [document.body, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 30 [document.body, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 31 [foreignDoc.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 31 [foreignDoc.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 32 [foreignDoc.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 32 [foreignDoc.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 33 [foreignDoc.head, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 33 [foreignDoc.head, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 34 [foreignDoc.body, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 34 [foreignDoc.body, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 35 [paras[0], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 35 [paras[0], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 36 [paras[0], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 36 [paras[0], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 37 [paras[0], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 37 [paras[0], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 38 [paras[1], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 38 [paras[1], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 39 [paras[1], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 39 [paras[1], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 40 [paras[1], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 40 [paras[1], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 41 [detachedPara1, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 41 [detachedPara1, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 42 [detachedPara1, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 42 [detachedPara1, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 43 [testDiv, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 43 [testDiv, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 44 [testDiv, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 44 [testDiv, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 45 [document, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 45 [document, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 46 [document, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 46 [document, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 47 [document, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 47 [document, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 48 [document, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 48 [document, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 49 [document, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 49 [document, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 50 [comment, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 50 [comment, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 51 [comment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 51 [comment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 52 [comment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 52 [comment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 53 [comment, 96] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 53 [comment, 96] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 54 [foreignDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 54 [foreignDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 55 [foreignDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 55 [foreignDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 56 [foreignComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 56 [foreignComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 57 [foreignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 57 [foreignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 58 [foreignTextNode, 36] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 58 [foreignTextNode, 36] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 59 [xmlDoc, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 59 [xmlDoc, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 60 [xmlDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 60 [xmlDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 61 [xmlDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 61 [xmlDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 62 [xmlDoc, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 62 [xmlDoc, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 63 [xmlComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 63 [xmlComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 64 [xmlComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 64 [xmlComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 65 [processingInstruction, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 65 [processingInstruction, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 66 [processingInstruction, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 66 [processingInstruction, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 67 [processingInstruction, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 67 [processingInstruction, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 68 [detachedTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 68 [detachedTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 69 [detachedTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 69 [detachedTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 70 [detachedForeignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 70 [detachedForeignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 71 [detachedForeignTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 71 [detachedForeignTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 72 [detachedXmlTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 72 [detachedXmlTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 73 [detachedXmlTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 73 [detachedXmlTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 74 [detachedProcessingInstruction, 12] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 74 [detachedProcessingInstruction, 12] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 75 [detachedComment, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 75 [detachedComment, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 76 [detachedComment, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 76 [detachedComment, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 77 [detachedForeignComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 77 [detachedForeignComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 78 [detachedForeignComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 78 [detachedForeignComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 79 [detachedXmlComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 79 [detachedXmlComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 80 [docfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 80 [docfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 81 [foreignDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 81 [foreignDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 82 [xmlDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 82 [xmlDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 83 [doctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 83 [doctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 84 [doctype, -17] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 84 [doctype, -17] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 85 [doctype, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 85 [doctype, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 86 [foreignDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 86 [foreignDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 87 [xmlDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 45 [xmlDoc, 1, xmlComment, 0] and point 87 [xmlDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 0 [paras[0].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 0 [paras[0].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 1 [paras[0].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 1 [paras[0].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 2 [paras[0].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 2 [paras[0].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 3 [paras[0].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 3 [paras[0].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 4 [paras[0].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 4 [paras[0].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 5 [paras[0].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 5 [paras[0].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 6 [paras[0].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 6 [paras[0].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 7 [paras[0].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 7 [paras[0].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 8 [paras[1].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 8 [paras[1].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 9 [paras[1].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 9 [paras[1].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 10 [paras[1].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 10 [paras[1].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 11 [paras[1].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 11 [paras[1].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 12 [paras[1].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 12 [paras[1].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 13 [paras[1].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 13 [paras[1].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 14 [paras[1].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 14 [paras[1].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 15 [paras[1].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 15 [paras[1].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 16 [detachedPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 16 [detachedPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 17 [detachedPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 17 [detachedPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 18 [detachedPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 18 [detachedPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 19 [detachedPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 19 [detachedPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 20 [foreignPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 20 [foreignPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 21 [foreignPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 21 [foreignPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 22 [foreignPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 22 [foreignPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 23 [foreignPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 23 [foreignPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 24 [document.documentElement, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 24 [document.documentElement, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 25 [document.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 25 [document.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 26 [document.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 26 [document.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 27 [document.documentElement, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 27 [document.documentElement, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 28 [document.documentElement, 7] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 28 [document.documentElement, 7] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 29 [document.head, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 29 [document.head, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 30 [document.body, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 30 [document.body, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 31 [foreignDoc.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 31 [foreignDoc.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 32 [foreignDoc.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 32 [foreignDoc.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 33 [foreignDoc.head, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 33 [foreignDoc.head, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 34 [foreignDoc.body, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 34 [foreignDoc.body, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 35 [paras[0], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 35 [paras[0], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 36 [paras[0], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 36 [paras[0], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 37 [paras[0], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 37 [paras[0], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 38 [paras[1], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 38 [paras[1], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 39 [paras[1], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 39 [paras[1], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 40 [paras[1], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 40 [paras[1], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 41 [detachedPara1, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 41 [detachedPara1, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 42 [detachedPara1, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 42 [detachedPara1, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 43 [testDiv, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 43 [testDiv, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 44 [testDiv, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 44 [testDiv, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 45 [document, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 45 [document, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 46 [document, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 46 [document, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 47 [document, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 47 [document, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 48 [document, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 48 [document, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 49 [document, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 49 [document, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 50 [comment, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 50 [comment, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 51 [comment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 51 [comment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 52 [comment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 52 [comment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 53 [comment, 96] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 53 [comment, 96] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 54 [foreignDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 54 [foreignDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 55 [foreignDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 55 [foreignDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 56 [foreignComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 56 [foreignComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 57 [foreignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 57 [foreignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 58 [foreignTextNode, 36] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 58 [foreignTextNode, 36] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 59 [xmlDoc, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 59 [xmlDoc, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 60 [xmlDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 60 [xmlDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 61 [xmlDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 61 [xmlDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 62 [xmlDoc, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 62 [xmlDoc, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 63 [xmlComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 63 [xmlComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 64 [xmlComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 64 [xmlComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 65 [processingInstruction, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 65 [processingInstruction, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 66 [processingInstruction, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 66 [processingInstruction, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 67 [processingInstruction, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 67 [processingInstruction, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 68 [detachedTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 68 [detachedTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 69 [detachedTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 69 [detachedTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 70 [detachedForeignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 70 [detachedForeignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 71 [detachedForeignTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 71 [detachedForeignTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 72 [detachedXmlTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 72 [detachedXmlTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 73 [detachedXmlTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 73 [detachedXmlTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 74 [detachedProcessingInstruction, 12] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 74 [detachedProcessingInstruction, 12] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 75 [detachedComment, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 75 [detachedComment, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 76 [detachedComment, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 76 [detachedComment, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 77 [detachedForeignComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 77 [detachedForeignComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 78 [detachedForeignComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 78 [detachedForeignComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 79 [detachedXmlComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 79 [detachedXmlComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 80 [docfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 80 [docfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 81 [foreignDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 81 [foreignDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 82 [xmlDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 82 [xmlDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 83 [doctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 83 [doctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 84 [doctype, -17] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 84 [doctype, -17] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 85 [doctype, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 85 [doctype, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 86 [foreignDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 86 [foreignDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 87 [xmlDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 46 [detachedTextNode, 0, detachedTextNode, 8] and point 87 [xmlDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] and point 0 [paras[0].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] and point 1 [paras[0].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] and point 2 [paras[0].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] and point 3 [paras[0].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] and point 4 [paras[0].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] and point 5 [paras[0].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] and point 6 [paras[0].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] and point 7 [paras[0].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] and point 8 [paras[1].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] and point 9 [paras[1].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] and point 10 [paras[1].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] and point 11 [paras[1].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] and point 12 [paras[1].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] and point 13 [paras[1].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] and point 14 [paras[1].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] and point 15 [paras[1].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] and point 16 [detachedPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] and point 17 [detachedPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] and point 18 [detachedPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] and point 19 [detachedPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] and point 20 [foreignPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] and point 21 [foreignPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] and point 22 [foreignPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] and point 23 [foreignPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] and point 24 [document.documentElement, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] and point 25 [document.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] and point 26 [document.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] and point 27 [document.documentElement, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] and point 28 [document.documentElement, 7] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] and point 29 [document.head, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] and point 30 [document.body, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] and point 31 [foreignDoc.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] and point 32 [foreignDoc.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] and point 33 [foreignDoc.head, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] and point 34 [foreignDoc.body, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] and point 35 [paras[0], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] and point 36 [paras[0], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] and point 37 [paras[0], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] and point 38 [paras[1], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] and point 39 [paras[1], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] and point 40 [paras[1], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] and point 41 [detachedPara1, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] and point 42 [detachedPara1, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] and point 43 [testDiv, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] and point 44 [testDiv, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] and point 45 [document, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] and point 46 [document, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] and point 47 [document, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] and point 48 [document, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] and point 49 [document, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] and point 50 [comment, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] and point 51 [comment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] and point 52 [comment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] and point 53 [comment, 96] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] and point 54 [foreignDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] and point 55 [foreignDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] and point 56 [foreignComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] and point 57 [foreignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] and point 58 [foreignTextNode, 36] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] and point 59 [xmlDoc, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] and point 60 [xmlDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] and point 61 [xmlDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] and point 62 [xmlDoc, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] and point 63 [xmlComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] and point 64 [xmlComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] and point 65 [processingInstruction, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] and point 66 [processingInstruction, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] and point 67 [processingInstruction, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] and point 68 [detachedTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] and point 69 [detachedTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] and point 70 [detachedForeignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] and point 71 [detachedForeignTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] and point 72 [detachedXmlTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] and point 73 [detachedXmlTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] and point 74 [detachedProcessingInstruction, 12] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] and point 75 [detachedComment, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] and point 76 [detachedComment, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] and point 77 [detachedForeignComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] and point 78 [detachedForeignComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] and point 79 [detachedXmlComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] and point 80 [docfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] and point 81 [foreignDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] and point 82 [xmlDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] and point 83 [doctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] and point 84 [doctype, -17] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] and point 85 [doctype, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] and point 86 [foreignDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] and point 87 [xmlDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 0 [paras[0].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 0 [paras[0].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 1 [paras[0].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 1 [paras[0].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 2 [paras[0].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 2 [paras[0].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 3 [paras[0].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 3 [paras[0].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 4 [paras[0].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 4 [paras[0].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 5 [paras[0].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 5 [paras[0].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 6 [paras[0].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 6 [paras[0].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 7 [paras[0].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 7 [paras[0].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 8 [paras[1].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 8 [paras[1].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 9 [paras[1].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 9 [paras[1].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 10 [paras[1].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 10 [paras[1].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 11 [paras[1].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 11 [paras[1].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 12 [paras[1].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 12 [paras[1].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 13 [paras[1].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 13 [paras[1].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 14 [paras[1].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 14 [paras[1].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 15 [paras[1].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 15 [paras[1].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 16 [detachedPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 16 [detachedPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 17 [detachedPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 17 [detachedPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 18 [detachedPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 18 [detachedPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 19 [detachedPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 19 [detachedPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 20 [foreignPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 20 [foreignPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 21 [foreignPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 21 [foreignPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 22 [foreignPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 22 [foreignPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 23 [foreignPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 23 [foreignPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 24 [document.documentElement, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 24 [document.documentElement, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 25 [document.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 25 [document.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 26 [document.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 26 [document.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 27 [document.documentElement, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 27 [document.documentElement, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 28 [document.documentElement, 7] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 28 [document.documentElement, 7] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 29 [document.head, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 29 [document.head, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 30 [document.body, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 30 [document.body, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 31 [foreignDoc.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 31 [foreignDoc.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 32 [foreignDoc.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 32 [foreignDoc.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 33 [foreignDoc.head, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 33 [foreignDoc.head, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 34 [foreignDoc.body, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 34 [foreignDoc.body, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 35 [paras[0], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 35 [paras[0], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 36 [paras[0], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 36 [paras[0], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 37 [paras[0], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 37 [paras[0], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 38 [paras[1], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 38 [paras[1], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 39 [paras[1], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 39 [paras[1], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 40 [paras[1], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 40 [paras[1], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 41 [detachedPara1, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 41 [detachedPara1, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 42 [detachedPara1, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 42 [detachedPara1, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 43 [testDiv, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 43 [testDiv, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 44 [testDiv, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 44 [testDiv, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 45 [document, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 45 [document, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 46 [document, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 46 [document, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 47 [document, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 47 [document, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 48 [document, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 48 [document, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 49 [document, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 49 [document, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 50 [comment, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 50 [comment, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 51 [comment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 51 [comment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 52 [comment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 52 [comment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 53 [comment, 96] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 53 [comment, 96] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 54 [foreignDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 54 [foreignDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 55 [foreignDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 55 [foreignDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 56 [foreignComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 56 [foreignComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 57 [foreignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 57 [foreignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 58 [foreignTextNode, 36] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 58 [foreignTextNode, 36] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 59 [xmlDoc, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 59 [xmlDoc, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 60 [xmlDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 60 [xmlDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 61 [xmlDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 61 [xmlDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 62 [xmlDoc, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 62 [xmlDoc, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 63 [xmlComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 63 [xmlComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 64 [xmlComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 64 [xmlComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 65 [processingInstruction, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 65 [processingInstruction, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 66 [processingInstruction, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 66 [processingInstruction, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 67 [processingInstruction, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 67 [processingInstruction, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 68 [detachedTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 68 [detachedTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 69 [detachedTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 69 [detachedTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 70 [detachedForeignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 70 [detachedForeignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 71 [detachedForeignTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 71 [detachedForeignTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 72 [detachedXmlTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 72 [detachedXmlTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 73 [detachedXmlTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 73 [detachedXmlTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 74 [detachedProcessingInstruction, 12] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 74 [detachedProcessingInstruction, 12] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 75 [detachedComment, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 75 [detachedComment, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 76 [detachedComment, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 76 [detachedComment, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 77 [detachedForeignComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 77 [detachedForeignComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 78 [detachedForeignComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 78 [detachedForeignComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 79 [detachedXmlComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 79 [detachedXmlComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 80 [docfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 80 [docfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 81 [foreignDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 81 [foreignDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 82 [xmlDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 82 [xmlDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 83 [doctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 83 [doctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 84 [doctype, -17] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 84 [doctype, -17] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 85 [doctype, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 85 [doctype, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 86 [foreignDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 86 [foreignDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 87 [xmlDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] and point 87 [xmlDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] and point 0 [paras[0].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] and point 1 [paras[0].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] and point 2 [paras[0].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] and point 3 [paras[0].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] and point 4 [paras[0].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] and point 5 [paras[0].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] and point 6 [paras[0].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] and point 7 [paras[0].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] and point 8 [paras[1].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] and point 9 [paras[1].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] and point 10 [paras[1].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] and point 11 [paras[1].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] and point 12 [paras[1].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] and point 13 [paras[1].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] and point 14 [paras[1].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] and point 15 [paras[1].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] and point 16 [detachedPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] and point 17 [detachedPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] and point 18 [detachedPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] and point 19 [detachedPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] and point 20 [foreignPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] and point 21 [foreignPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] and point 22 [foreignPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] and point 23 [foreignPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] and point 24 [document.documentElement, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] and point 25 [document.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] and point 26 [document.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] and point 27 [document.documentElement, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] and point 28 [document.documentElement, 7] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] and point 29 [document.head, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] and point 30 [document.body, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] and point 31 [foreignDoc.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] and point 32 [foreignDoc.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] and point 33 [foreignDoc.head, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] and point 34 [foreignDoc.body, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] and point 35 [paras[0], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] and point 36 [paras[0], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] and point 37 [paras[0], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] and point 38 [paras[1], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] and point 39 [paras[1], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] and point 40 [paras[1], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] and point 41 [detachedPara1, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] and point 42 [detachedPara1, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] and point 43 [testDiv, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] and point 44 [testDiv, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] and point 45 [document, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] and point 46 [document, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] and point 47 [document, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] and point 48 [document, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] and point 49 [document, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] and point 50 [comment, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] and point 51 [comment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] and point 52 [comment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] and point 53 [comment, 96] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] and point 54 [foreignDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] and point 55 [foreignDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] and point 56 [foreignComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] and point 57 [foreignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] and point 58 [foreignTextNode, 36] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] and point 59 [xmlDoc, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] and point 60 [xmlDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] and point 61 [xmlDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] and point 62 [xmlDoc, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] and point 63 [xmlComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] and point 64 [xmlComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] and point 65 [processingInstruction, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] and point 66 [processingInstruction, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] and point 67 [processingInstruction, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] and point 68 [detachedTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] and point 69 [detachedTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] and point 70 [detachedForeignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] and point 71 [detachedForeignTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] and point 72 [detachedXmlTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] and point 73 [detachedXmlTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] and point 74 [detachedProcessingInstruction, 12] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] and point 75 [detachedComment, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] and point 76 [detachedComment, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] and point 77 [detachedForeignComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] and point 78 [detachedForeignComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] and point 79 [detachedXmlComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] and point 80 [docfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] and point 81 [foreignDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] and point 82 [xmlDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] and point 83 [doctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] and point 84 [doctype, -17] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] and point 85 [doctype, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] and point 86 [foreignDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] and point 87 [xmlDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 0 [paras[0].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 0 [paras[0].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 1 [paras[0].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 1 [paras[0].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 2 [paras[0].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 2 [paras[0].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 3 [paras[0].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 3 [paras[0].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 4 [paras[0].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 4 [paras[0].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 5 [paras[0].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 5 [paras[0].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 6 [paras[0].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 6 [paras[0].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 7 [paras[0].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 7 [paras[0].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 8 [paras[1].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 8 [paras[1].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 9 [paras[1].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 9 [paras[1].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 10 [paras[1].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 10 [paras[1].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 11 [paras[1].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 11 [paras[1].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 12 [paras[1].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 12 [paras[1].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 13 [paras[1].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 13 [paras[1].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 14 [paras[1].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 14 [paras[1].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 15 [paras[1].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 15 [paras[1].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 16 [detachedPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 16 [detachedPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 17 [detachedPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 17 [detachedPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 18 [detachedPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 18 [detachedPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 19 [detachedPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 19 [detachedPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 20 [foreignPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 20 [foreignPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 21 [foreignPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 21 [foreignPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 22 [foreignPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 22 [foreignPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 23 [foreignPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 23 [foreignPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 24 [document.documentElement, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 24 [document.documentElement, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 25 [document.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 25 [document.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 26 [document.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 26 [document.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 27 [document.documentElement, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 27 [document.documentElement, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 28 [document.documentElement, 7] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 28 [document.documentElement, 7] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 29 [document.head, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 29 [document.head, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 30 [document.body, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 30 [document.body, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 31 [foreignDoc.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 31 [foreignDoc.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 32 [foreignDoc.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 32 [foreignDoc.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 33 [foreignDoc.head, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 33 [foreignDoc.head, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 34 [foreignDoc.body, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 34 [foreignDoc.body, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 35 [paras[0], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 35 [paras[0], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 36 [paras[0], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 36 [paras[0], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 37 [paras[0], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 37 [paras[0], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 38 [paras[1], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 38 [paras[1], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 39 [paras[1], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 39 [paras[1], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 40 [paras[1], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 40 [paras[1], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 41 [detachedPara1, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 41 [detachedPara1, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 42 [detachedPara1, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 42 [detachedPara1, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 43 [testDiv, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 43 [testDiv, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 44 [testDiv, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 44 [testDiv, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 45 [document, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 45 [document, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 46 [document, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 46 [document, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 47 [document, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 47 [document, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 48 [document, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 48 [document, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 49 [document, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 49 [document, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 50 [comment, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 50 [comment, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 51 [comment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 51 [comment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 52 [comment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 52 [comment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 53 [comment, 96] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 53 [comment, 96] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 54 [foreignDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 54 [foreignDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 55 [foreignDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 55 [foreignDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 56 [foreignComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 56 [foreignComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 57 [foreignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 57 [foreignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 58 [foreignTextNode, 36] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 58 [foreignTextNode, 36] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 59 [xmlDoc, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 59 [xmlDoc, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 60 [xmlDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 60 [xmlDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 61 [xmlDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 61 [xmlDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 62 [xmlDoc, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 62 [xmlDoc, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 63 [xmlComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 63 [xmlComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 64 [xmlComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 64 [xmlComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 65 [processingInstruction, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 65 [processingInstruction, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 66 [processingInstruction, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 66 [processingInstruction, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 67 [processingInstruction, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 67 [processingInstruction, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 68 [detachedTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 68 [detachedTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 69 [detachedTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 69 [detachedTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 70 [detachedForeignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 70 [detachedForeignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 71 [detachedForeignTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 71 [detachedForeignTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 72 [detachedXmlTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 72 [detachedXmlTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 73 [detachedXmlTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 73 [detachedXmlTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 74 [detachedProcessingInstruction, 12] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 74 [detachedProcessingInstruction, 12] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 75 [detachedComment, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 75 [detachedComment, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 76 [detachedComment, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 76 [detachedComment, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 77 [detachedForeignComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 77 [detachedForeignComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 78 [detachedForeignComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 78 [detachedForeignComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 79 [detachedXmlComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 79 [detachedXmlComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 80 [docfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 80 [docfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 81 [foreignDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 81 [foreignDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 82 [xmlDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 82 [xmlDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 83 [doctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 83 [doctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 84 [doctype, -17] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 84 [doctype, -17] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 85 [doctype, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 85 [doctype, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 86 [foreignDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 86 [foreignDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 87 [xmlDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] and point 87 [xmlDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 51 [detachedComment, 3, detachedComment, 4] and point 0 [paras[0].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 51 [detachedComment, 3, detachedComment, 4] and point 0 [paras[0].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 51 [detachedComment, 3, detachedComment, 4] and point 1 [paras[0].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 51 [detachedComment, 3, detachedComment, 4] and point 1 [paras[0].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 51 [detachedComment, 3, detachedComment, 4] and point 2 [paras[0].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 51 [detachedComment, 3, detachedComment, 4] and point 2 [paras[0].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 51 [detachedComment, 3, detachedComment, 4] and point 3 [paras[0].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 51 [detachedComment, 3, detachedComment, 4] and point 3 [paras[0].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 51 [detachedComment, 3, detachedComment, 4] and point 4 [paras[0].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 51 [detachedComment, 3, detachedComment, 4] and point 4 [paras[0].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 51 [detachedComment, 3, detachedComment, 4] and point 5 [paras[0].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 51 [detachedComment, 3, detachedComment, 4] and point 5 [paras[0].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 51 [detachedComment, 3, detachedComment, 4] and point 6 [paras[0].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 51 [detachedComment, 3, detachedComment, 4] and point 6 [paras[0].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 51 [detachedComment, 3, detachedComment, 4] and point 7 [paras[0].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 51 [detachedComment, 3, detachedComment, 4] and point 7 [paras[0].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 51 [detachedComment, 3, detachedComment, 4] and point 8 [paras[1].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 51 [detachedComment, 3, detachedComment, 4] and point 8 [paras[1].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 51 [detachedComment, 3, detachedComment, 4] and point 9 [paras[1].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 51 [detachedComment, 3, detachedComment, 4] and point 9 [paras[1].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 51 [detachedComment, 3, detachedComment, 4] and point 10 [paras[1].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 51 [detachedComment, 3, detachedComment, 4] and point 10 [paras[1].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 51 [detachedComment, 3, detachedComment, 4] and point 11 [paras[1].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 51 [detachedComment, 3, detachedComment, 4] and point 11 [paras[1].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 51 [detachedComment, 3, detachedComment, 4] and point 12 [paras[1].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 51 [detachedComment, 3, detachedComment, 4] and point 12 [paras[1].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 51 [detachedComment, 3, detachedComment, 4] and point 13 [paras[1].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 51 [detachedComment, 3, detachedComment, 4] and point 13 [paras[1].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 51 [detachedComment, 3, detachedComment, 4] and point 14 [paras[1].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 51 [detachedComment, 3, detachedComment, 4] and point 14 [paras[1].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 51 [detachedComment, 3, detachedComment, 4] and point 15 [paras[1].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 51 [detachedComment, 3, detachedComment, 4] and point 15 [paras[1].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 51 [detachedComment, 3, detachedComment, 4] and point 16 [detachedPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 51 [detachedComment, 3, detachedComment, 4] and point 16 [detachedPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 51 [detachedComment, 3, detachedComment, 4] and point 17 [detachedPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 51 [detachedComment, 3, detachedComment, 4] and point 17 [detachedPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 51 [detachedComment, 3, detachedComment, 4] and point 18 [detachedPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 51 [detachedComment, 3, detachedComment, 4] and point 18 [detachedPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 51 [detachedComment, 3, detachedComment, 4] and point 19 [detachedPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 51 [detachedComment, 3, detachedComment, 4] and point 19 [detachedPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 51 [detachedComment, 3, detachedComment, 4] and point 20 [foreignPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 51 [detachedComment, 3, detachedComment, 4] and point 20 [foreignPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 51 [detachedComment, 3, detachedComment, 4] and point 21 [foreignPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 51 [detachedComment, 3, detachedComment, 4] and point 21 [foreignPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 51 [detachedComment, 3, detachedComment, 4] and point 22 [foreignPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 51 [detachedComment, 3, detachedComment, 4] and point 22 [foreignPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 51 [detachedComment, 3, detachedComment, 4] and point 23 [foreignPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 51 [detachedComment, 3, detachedComment, 4] and point 23 [foreignPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 51 [detachedComment, 3, detachedComment, 4] and point 24 [document.documentElement, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 51 [detachedComment, 3, detachedComment, 4] and point 24 [document.documentElement, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 51 [detachedComment, 3, detachedComment, 4] and point 25 [document.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 51 [detachedComment, 3, detachedComment, 4] and point 25 [document.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 51 [detachedComment, 3, detachedComment, 4] and point 26 [document.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 51 [detachedComment, 3, detachedComment, 4] and point 26 [document.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 51 [detachedComment, 3, detachedComment, 4] and point 27 [document.documentElement, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 51 [detachedComment, 3, detachedComment, 4] and point 27 [document.documentElement, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 51 [detachedComment, 3, detachedComment, 4] and point 28 [document.documentElement, 7] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 51 [detachedComment, 3, detachedComment, 4] and point 28 [document.documentElement, 7] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 51 [detachedComment, 3, detachedComment, 4] and point 29 [document.head, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 51 [detachedComment, 3, detachedComment, 4] and point 29 [document.head, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 51 [detachedComment, 3, detachedComment, 4] and point 30 [document.body, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 51 [detachedComment, 3, detachedComment, 4] and point 30 [document.body, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 51 [detachedComment, 3, detachedComment, 4] and point 31 [foreignDoc.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 51 [detachedComment, 3, detachedComment, 4] and point 31 [foreignDoc.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 51 [detachedComment, 3, detachedComment, 4] and point 32 [foreignDoc.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 51 [detachedComment, 3, detachedComment, 4] and point 32 [foreignDoc.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 51 [detachedComment, 3, detachedComment, 4] and point 33 [foreignDoc.head, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 51 [detachedComment, 3, detachedComment, 4] and point 33 [foreignDoc.head, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 51 [detachedComment, 3, detachedComment, 4] and point 34 [foreignDoc.body, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 51 [detachedComment, 3, detachedComment, 4] and point 34 [foreignDoc.body, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 51 [detachedComment, 3, detachedComment, 4] and point 35 [paras[0], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 51 [detachedComment, 3, detachedComment, 4] and point 35 [paras[0], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 51 [detachedComment, 3, detachedComment, 4] and point 36 [paras[0], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 51 [detachedComment, 3, detachedComment, 4] and point 36 [paras[0], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 51 [detachedComment, 3, detachedComment, 4] and point 37 [paras[0], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 51 [detachedComment, 3, detachedComment, 4] and point 37 [paras[0], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 51 [detachedComment, 3, detachedComment, 4] and point 38 [paras[1], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 51 [detachedComment, 3, detachedComment, 4] and point 38 [paras[1], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 51 [detachedComment, 3, detachedComment, 4] and point 39 [paras[1], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 51 [detachedComment, 3, detachedComment, 4] and point 39 [paras[1], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 51 [detachedComment, 3, detachedComment, 4] and point 40 [paras[1], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 51 [detachedComment, 3, detachedComment, 4] and point 40 [paras[1], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 51 [detachedComment, 3, detachedComment, 4] and point 41 [detachedPara1, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 51 [detachedComment, 3, detachedComment, 4] and point 41 [detachedPara1, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 51 [detachedComment, 3, detachedComment, 4] and point 42 [detachedPara1, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 51 [detachedComment, 3, detachedComment, 4] and point 42 [detachedPara1, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 51 [detachedComment, 3, detachedComment, 4] and point 43 [testDiv, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 51 [detachedComment, 3, detachedComment, 4] and point 43 [testDiv, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 51 [detachedComment, 3, detachedComment, 4] and point 44 [testDiv, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 51 [detachedComment, 3, detachedComment, 4] and point 44 [testDiv, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 51 [detachedComment, 3, detachedComment, 4] and point 45 [document, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 51 [detachedComment, 3, detachedComment, 4] and point 45 [document, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 51 [detachedComment, 3, detachedComment, 4] and point 46 [document, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 51 [detachedComment, 3, detachedComment, 4] and point 46 [document, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 51 [detachedComment, 3, detachedComment, 4] and point 47 [document, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 51 [detachedComment, 3, detachedComment, 4] and point 47 [document, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 51 [detachedComment, 3, detachedComment, 4] and point 48 [document, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 51 [detachedComment, 3, detachedComment, 4] and point 48 [document, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 51 [detachedComment, 3, detachedComment, 4] and point 49 [document, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 51 [detachedComment, 3, detachedComment, 4] and point 49 [document, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 51 [detachedComment, 3, detachedComment, 4] and point 50 [comment, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 51 [detachedComment, 3, detachedComment, 4] and point 50 [comment, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 51 [detachedComment, 3, detachedComment, 4] and point 51 [comment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 51 [detachedComment, 3, detachedComment, 4] and point 51 [comment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 51 [detachedComment, 3, detachedComment, 4] and point 52 [comment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 51 [detachedComment, 3, detachedComment, 4] and point 52 [comment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 51 [detachedComment, 3, detachedComment, 4] and point 53 [comment, 96] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 51 [detachedComment, 3, detachedComment, 4] and point 53 [comment, 96] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 51 [detachedComment, 3, detachedComment, 4] and point 54 [foreignDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 51 [detachedComment, 3, detachedComment, 4] and point 54 [foreignDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 51 [detachedComment, 3, detachedComment, 4] and point 55 [foreignDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 51 [detachedComment, 3, detachedComment, 4] and point 55 [foreignDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 51 [detachedComment, 3, detachedComment, 4] and point 56 [foreignComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 51 [detachedComment, 3, detachedComment, 4] and point 56 [foreignComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 51 [detachedComment, 3, detachedComment, 4] and point 57 [foreignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 51 [detachedComment, 3, detachedComment, 4] and point 57 [foreignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 51 [detachedComment, 3, detachedComment, 4] and point 58 [foreignTextNode, 36] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 51 [detachedComment, 3, detachedComment, 4] and point 58 [foreignTextNode, 36] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 51 [detachedComment, 3, detachedComment, 4] and point 59 [xmlDoc, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 51 [detachedComment, 3, detachedComment, 4] and point 59 [xmlDoc, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 51 [detachedComment, 3, detachedComment, 4] and point 60 [xmlDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 51 [detachedComment, 3, detachedComment, 4] and point 60 [xmlDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 51 [detachedComment, 3, detachedComment, 4] and point 61 [xmlDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 51 [detachedComment, 3, detachedComment, 4] and point 61 [xmlDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 51 [detachedComment, 3, detachedComment, 4] and point 62 [xmlDoc, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 51 [detachedComment, 3, detachedComment, 4] and point 62 [xmlDoc, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 51 [detachedComment, 3, detachedComment, 4] and point 63 [xmlComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 51 [detachedComment, 3, detachedComment, 4] and point 63 [xmlComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 51 [detachedComment, 3, detachedComment, 4] and point 64 [xmlComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 51 [detachedComment, 3, detachedComment, 4] and point 64 [xmlComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 51 [detachedComment, 3, detachedComment, 4] and point 65 [processingInstruction, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 51 [detachedComment, 3, detachedComment, 4] and point 65 [processingInstruction, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 51 [detachedComment, 3, detachedComment, 4] and point 66 [processingInstruction, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 51 [detachedComment, 3, detachedComment, 4] and point 66 [processingInstruction, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 51 [detachedComment, 3, detachedComment, 4] and point 67 [processingInstruction, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 51 [detachedComment, 3, detachedComment, 4] and point 67 [processingInstruction, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 51 [detachedComment, 3, detachedComment, 4] and point 68 [detachedTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 51 [detachedComment, 3, detachedComment, 4] and point 68 [detachedTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 51 [detachedComment, 3, detachedComment, 4] and point 69 [detachedTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 51 [detachedComment, 3, detachedComment, 4] and point 69 [detachedTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 51 [detachedComment, 3, detachedComment, 4] and point 70 [detachedForeignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 51 [detachedComment, 3, detachedComment, 4] and point 70 [detachedForeignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 51 [detachedComment, 3, detachedComment, 4] and point 71 [detachedForeignTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 51 [detachedComment, 3, detachedComment, 4] and point 71 [detachedForeignTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 51 [detachedComment, 3, detachedComment, 4] and point 72 [detachedXmlTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 51 [detachedComment, 3, detachedComment, 4] and point 72 [detachedXmlTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 51 [detachedComment, 3, detachedComment, 4] and point 73 [detachedXmlTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 51 [detachedComment, 3, detachedComment, 4] and point 73 [detachedXmlTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 51 [detachedComment, 3, detachedComment, 4] and point 74 [detachedProcessingInstruction, 12] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 51 [detachedComment, 3, detachedComment, 4] and point 74 [detachedProcessingInstruction, 12] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 51 [detachedComment, 3, detachedComment, 4] and point 75 [detachedComment, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 51 [detachedComment, 3, detachedComment, 4] and point 75 [detachedComment, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 51 [detachedComment, 3, detachedComment, 4] and point 76 [detachedComment, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 51 [detachedComment, 3, detachedComment, 4] and point 76 [detachedComment, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 51 [detachedComment, 3, detachedComment, 4] and point 77 [detachedForeignComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 51 [detachedComment, 3, detachedComment, 4] and point 77 [detachedForeignComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 51 [detachedComment, 3, detachedComment, 4] and point 78 [detachedForeignComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 51 [detachedComment, 3, detachedComment, 4] and point 78 [detachedForeignComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 51 [detachedComment, 3, detachedComment, 4] and point 79 [detachedXmlComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 51 [detachedComment, 3, detachedComment, 4] and point 79 [detachedXmlComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 51 [detachedComment, 3, detachedComment, 4] and point 80 [docfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 51 [detachedComment, 3, detachedComment, 4] and point 80 [docfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 51 [detachedComment, 3, detachedComment, 4] and point 81 [foreignDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 51 [detachedComment, 3, detachedComment, 4] and point 81 [foreignDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 51 [detachedComment, 3, detachedComment, 4] and point 82 [xmlDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 51 [detachedComment, 3, detachedComment, 4] and point 82 [xmlDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 51 [detachedComment, 3, detachedComment, 4] and point 83 [doctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 51 [detachedComment, 3, detachedComment, 4] and point 83 [doctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 51 [detachedComment, 3, detachedComment, 4] and point 84 [doctype, -17] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 51 [detachedComment, 3, detachedComment, 4] and point 84 [doctype, -17] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 51 [detachedComment, 3, detachedComment, 4] and point 85 [doctype, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 51 [detachedComment, 3, detachedComment, 4] and point 85 [doctype, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 51 [detachedComment, 3, detachedComment, 4] and point 86 [foreignDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 51 [detachedComment, 3, detachedComment, 4] and point 86 [foreignDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 51 [detachedComment, 3, detachedComment, 4] and point 87 [xmlDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 51 [detachedComment, 3, detachedComment, 4] and point 87 [xmlDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 52 [detachedComment, 5, detachedComment, 5] and point 0 [paras[0].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 52 [detachedComment, 5, detachedComment, 5] and point 1 [paras[0].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 52 [detachedComment, 5, detachedComment, 5] and point 2 [paras[0].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 52 [detachedComment, 5, detachedComment, 5] and point 3 [paras[0].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 52 [detachedComment, 5, detachedComment, 5] and point 4 [paras[0].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 52 [detachedComment, 5, detachedComment, 5] and point 5 [paras[0].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 52 [detachedComment, 5, detachedComment, 5] and point 6 [paras[0].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 52 [detachedComment, 5, detachedComment, 5] and point 7 [paras[0].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 52 [detachedComment, 5, detachedComment, 5] and point 8 [paras[1].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 52 [detachedComment, 5, detachedComment, 5] and point 9 [paras[1].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 52 [detachedComment, 5, detachedComment, 5] and point 10 [paras[1].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 52 [detachedComment, 5, detachedComment, 5] and point 11 [paras[1].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 52 [detachedComment, 5, detachedComment, 5] and point 12 [paras[1].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 52 [detachedComment, 5, detachedComment, 5] and point 13 [paras[1].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 52 [detachedComment, 5, detachedComment, 5] and point 14 [paras[1].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 52 [detachedComment, 5, detachedComment, 5] and point 15 [paras[1].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 52 [detachedComment, 5, detachedComment, 5] and point 16 [detachedPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 52 [detachedComment, 5, detachedComment, 5] and point 17 [detachedPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 52 [detachedComment, 5, detachedComment, 5] and point 18 [detachedPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 52 [detachedComment, 5, detachedComment, 5] and point 19 [detachedPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 52 [detachedComment, 5, detachedComment, 5] and point 20 [foreignPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 52 [detachedComment, 5, detachedComment, 5] and point 21 [foreignPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 52 [detachedComment, 5, detachedComment, 5] and point 22 [foreignPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 52 [detachedComment, 5, detachedComment, 5] and point 23 [foreignPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 52 [detachedComment, 5, detachedComment, 5] and point 24 [document.documentElement, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 52 [detachedComment, 5, detachedComment, 5] and point 25 [document.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 52 [detachedComment, 5, detachedComment, 5] and point 26 [document.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 52 [detachedComment, 5, detachedComment, 5] and point 27 [document.documentElement, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 52 [detachedComment, 5, detachedComment, 5] and point 28 [document.documentElement, 7] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 52 [detachedComment, 5, detachedComment, 5] and point 29 [document.head, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 52 [detachedComment, 5, detachedComment, 5] and point 30 [document.body, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 52 [detachedComment, 5, detachedComment, 5] and point 31 [foreignDoc.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 52 [detachedComment, 5, detachedComment, 5] and point 32 [foreignDoc.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 52 [detachedComment, 5, detachedComment, 5] and point 33 [foreignDoc.head, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 52 [detachedComment, 5, detachedComment, 5] and point 34 [foreignDoc.body, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 52 [detachedComment, 5, detachedComment, 5] and point 35 [paras[0], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 52 [detachedComment, 5, detachedComment, 5] and point 36 [paras[0], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 52 [detachedComment, 5, detachedComment, 5] and point 37 [paras[0], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 52 [detachedComment, 5, detachedComment, 5] and point 38 [paras[1], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 52 [detachedComment, 5, detachedComment, 5] and point 39 [paras[1], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 52 [detachedComment, 5, detachedComment, 5] and point 40 [paras[1], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 52 [detachedComment, 5, detachedComment, 5] and point 41 [detachedPara1, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 52 [detachedComment, 5, detachedComment, 5] and point 42 [detachedPara1, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 52 [detachedComment, 5, detachedComment, 5] and point 43 [testDiv, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 52 [detachedComment, 5, detachedComment, 5] and point 44 [testDiv, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 52 [detachedComment, 5, detachedComment, 5] and point 45 [document, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 52 [detachedComment, 5, detachedComment, 5] and point 46 [document, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 52 [detachedComment, 5, detachedComment, 5] and point 47 [document, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 52 [detachedComment, 5, detachedComment, 5] and point 48 [document, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 52 [detachedComment, 5, detachedComment, 5] and point 49 [document, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 52 [detachedComment, 5, detachedComment, 5] and point 50 [comment, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 52 [detachedComment, 5, detachedComment, 5] and point 51 [comment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 52 [detachedComment, 5, detachedComment, 5] and point 52 [comment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 52 [detachedComment, 5, detachedComment, 5] and point 53 [comment, 96] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 52 [detachedComment, 5, detachedComment, 5] and point 54 [foreignDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 52 [detachedComment, 5, detachedComment, 5] and point 55 [foreignDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 52 [detachedComment, 5, detachedComment, 5] and point 56 [foreignComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 52 [detachedComment, 5, detachedComment, 5] and point 57 [foreignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 52 [detachedComment, 5, detachedComment, 5] and point 58 [foreignTextNode, 36] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 52 [detachedComment, 5, detachedComment, 5] and point 59 [xmlDoc, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 52 [detachedComment, 5, detachedComment, 5] and point 60 [xmlDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 52 [detachedComment, 5, detachedComment, 5] and point 61 [xmlDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 52 [detachedComment, 5, detachedComment, 5] and point 62 [xmlDoc, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 52 [detachedComment, 5, detachedComment, 5] and point 63 [xmlComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 52 [detachedComment, 5, detachedComment, 5] and point 64 [xmlComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 52 [detachedComment, 5, detachedComment, 5] and point 65 [processingInstruction, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 52 [detachedComment, 5, detachedComment, 5] and point 66 [processingInstruction, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 52 [detachedComment, 5, detachedComment, 5] and point 67 [processingInstruction, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 52 [detachedComment, 5, detachedComment, 5] and point 68 [detachedTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 52 [detachedComment, 5, detachedComment, 5] and point 69 [detachedTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 52 [detachedComment, 5, detachedComment, 5] and point 70 [detachedForeignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 52 [detachedComment, 5, detachedComment, 5] and point 71 [detachedForeignTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 52 [detachedComment, 5, detachedComment, 5] and point 72 [detachedXmlTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 52 [detachedComment, 5, detachedComment, 5] and point 73 [detachedXmlTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 52 [detachedComment, 5, detachedComment, 5] and point 74 [detachedProcessingInstruction, 12] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 52 [detachedComment, 5, detachedComment, 5] and point 75 [detachedComment, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 52 [detachedComment, 5, detachedComment, 5] and point 76 [detachedComment, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 52 [detachedComment, 5, detachedComment, 5] and point 77 [detachedForeignComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 52 [detachedComment, 5, detachedComment, 5] and point 78 [detachedForeignComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 52 [detachedComment, 5, detachedComment, 5] and point 79 [detachedXmlComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 52 [detachedComment, 5, detachedComment, 5] and point 80 [docfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 52 [detachedComment, 5, detachedComment, 5] and point 81 [foreignDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 52 [detachedComment, 5, detachedComment, 5] and point 82 [xmlDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 52 [detachedComment, 5, detachedComment, 5] and point 83 [doctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 52 [detachedComment, 5, detachedComment, 5] and point 84 [doctype, -17] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 52 [detachedComment, 5, detachedComment, 5] and point 85 [doctype, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 52 [detachedComment, 5, detachedComment, 5] and point 86 [foreignDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 52 [detachedComment, 5, detachedComment, 5] and point 87 [xmlDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 0 [paras[0].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 0 [paras[0].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 1 [paras[0].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 1 [paras[0].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 2 [paras[0].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 2 [paras[0].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 3 [paras[0].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 3 [paras[0].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 4 [paras[0].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 4 [paras[0].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 5 [paras[0].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 5 [paras[0].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 6 [paras[0].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 6 [paras[0].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 7 [paras[0].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 7 [paras[0].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 8 [paras[1].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 8 [paras[1].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 9 [paras[1].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 9 [paras[1].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 10 [paras[1].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 10 [paras[1].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 11 [paras[1].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 11 [paras[1].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 12 [paras[1].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 12 [paras[1].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 13 [paras[1].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 13 [paras[1].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 14 [paras[1].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 14 [paras[1].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 15 [paras[1].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 15 [paras[1].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 16 [detachedPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 16 [detachedPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 17 [detachedPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 17 [detachedPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 18 [detachedPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 18 [detachedPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 19 [detachedPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 19 [detachedPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 20 [foreignPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 20 [foreignPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 21 [foreignPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 21 [foreignPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 22 [foreignPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 22 [foreignPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 23 [foreignPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 23 [foreignPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 24 [document.documentElement, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 24 [document.documentElement, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 25 [document.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 25 [document.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 26 [document.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 26 [document.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 27 [document.documentElement, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 27 [document.documentElement, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 28 [document.documentElement, 7] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 28 [document.documentElement, 7] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 29 [document.head, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 29 [document.head, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 30 [document.body, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 30 [document.body, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 31 [foreignDoc.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 31 [foreignDoc.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 32 [foreignDoc.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 32 [foreignDoc.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 33 [foreignDoc.head, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 33 [foreignDoc.head, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 34 [foreignDoc.body, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 34 [foreignDoc.body, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 35 [paras[0], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 35 [paras[0], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 36 [paras[0], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 36 [paras[0], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 37 [paras[0], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 37 [paras[0], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 38 [paras[1], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 38 [paras[1], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 39 [paras[1], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 39 [paras[1], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 40 [paras[1], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 40 [paras[1], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 41 [detachedPara1, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 41 [detachedPara1, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 42 [detachedPara1, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 42 [detachedPara1, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 43 [testDiv, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 43 [testDiv, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 44 [testDiv, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 44 [testDiv, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 45 [document, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 45 [document, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 46 [document, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 46 [document, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 47 [document, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 47 [document, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 48 [document, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 48 [document, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 49 [document, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 49 [document, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 50 [comment, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 50 [comment, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 51 [comment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 51 [comment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 52 [comment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 52 [comment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 53 [comment, 96] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 53 [comment, 96] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 54 [foreignDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 54 [foreignDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 55 [foreignDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 55 [foreignDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 56 [foreignComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 56 [foreignComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 57 [foreignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 57 [foreignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 58 [foreignTextNode, 36] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 58 [foreignTextNode, 36] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 59 [xmlDoc, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 59 [xmlDoc, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 60 [xmlDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 60 [xmlDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 61 [xmlDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 61 [xmlDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 62 [xmlDoc, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 62 [xmlDoc, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 63 [xmlComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 63 [xmlComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 64 [xmlComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 64 [xmlComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 65 [processingInstruction, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 65 [processingInstruction, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 66 [processingInstruction, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 66 [processingInstruction, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 67 [processingInstruction, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 67 [processingInstruction, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 68 [detachedTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 68 [detachedTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 69 [detachedTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 69 [detachedTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 70 [detachedForeignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 70 [detachedForeignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 71 [detachedForeignTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 71 [detachedForeignTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 72 [detachedXmlTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 72 [detachedXmlTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 73 [detachedXmlTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 73 [detachedXmlTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 74 [detachedProcessingInstruction, 12] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 74 [detachedProcessingInstruction, 12] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 75 [detachedComment, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 75 [detachedComment, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 76 [detachedComment, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 76 [detachedComment, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 77 [detachedForeignComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 77 [detachedForeignComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 78 [detachedForeignComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 78 [detachedForeignComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 79 [detachedXmlComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 79 [detachedXmlComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 80 [docfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 80 [docfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 81 [foreignDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 81 [foreignDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 82 [xmlDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 82 [xmlDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 83 [doctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 83 [doctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 84 [doctype, -17] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 84 [doctype, -17] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 85 [doctype, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 85 [doctype, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 86 [foreignDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 86 [foreignDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 87 [xmlDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 53 [detachedForeignComment, 0, detachedForeignComment, 1] and point 87 [xmlDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 54 [detachedForeignComment, 4, detachedForeignComment, 4] and point 0 [paras[0].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 54 [detachedForeignComment, 4, detachedForeignComment, 4] and point 1 [paras[0].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 54 [detachedForeignComment, 4, detachedForeignComment, 4] and point 2 [paras[0].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 54 [detachedForeignComment, 4, detachedForeignComment, 4] and point 3 [paras[0].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 54 [detachedForeignComment, 4, detachedForeignComment, 4] and point 4 [paras[0].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 54 [detachedForeignComment, 4, detachedForeignComment, 4] and point 5 [paras[0].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 54 [detachedForeignComment, 4, detachedForeignComment, 4] and point 6 [paras[0].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 54 [detachedForeignComment, 4, detachedForeignComment, 4] and point 7 [paras[0].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 54 [detachedForeignComment, 4, detachedForeignComment, 4] and point 8 [paras[1].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 54 [detachedForeignComment, 4, detachedForeignComment, 4] and point 9 [paras[1].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 54 [detachedForeignComment, 4, detachedForeignComment, 4] and point 10 [paras[1].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 54 [detachedForeignComment, 4, detachedForeignComment, 4] and point 11 [paras[1].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 54 [detachedForeignComment, 4, detachedForeignComment, 4] and point 12 [paras[1].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 54 [detachedForeignComment, 4, detachedForeignComment, 4] and point 13 [paras[1].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 54 [detachedForeignComment, 4, detachedForeignComment, 4] and point 14 [paras[1].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 54 [detachedForeignComment, 4, detachedForeignComment, 4] and point 15 [paras[1].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 54 [detachedForeignComment, 4, detachedForeignComment, 4] and point 16 [detachedPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 54 [detachedForeignComment, 4, detachedForeignComment, 4] and point 17 [detachedPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 54 [detachedForeignComment, 4, detachedForeignComment, 4] and point 18 [detachedPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 54 [detachedForeignComment, 4, detachedForeignComment, 4] and point 19 [detachedPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 54 [detachedForeignComment, 4, detachedForeignComment, 4] and point 20 [foreignPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 54 [detachedForeignComment, 4, detachedForeignComment, 4] and point 21 [foreignPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 54 [detachedForeignComment, 4, detachedForeignComment, 4] and point 22 [foreignPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 54 [detachedForeignComment, 4, detachedForeignComment, 4] and point 23 [foreignPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 54 [detachedForeignComment, 4, detachedForeignComment, 4] and point 24 [document.documentElement, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 54 [detachedForeignComment, 4, detachedForeignComment, 4] and point 25 [document.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 54 [detachedForeignComment, 4, detachedForeignComment, 4] and point 26 [document.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 54 [detachedForeignComment, 4, detachedForeignComment, 4] and point 27 [document.documentElement, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 54 [detachedForeignComment, 4, detachedForeignComment, 4] and point 28 [document.documentElement, 7] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 54 [detachedForeignComment, 4, detachedForeignComment, 4] and point 29 [document.head, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 54 [detachedForeignComment, 4, detachedForeignComment, 4] and point 30 [document.body, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 54 [detachedForeignComment, 4, detachedForeignComment, 4] and point 31 [foreignDoc.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 54 [detachedForeignComment, 4, detachedForeignComment, 4] and point 32 [foreignDoc.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 54 [detachedForeignComment, 4, detachedForeignComment, 4] and point 33 [foreignDoc.head, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 54 [detachedForeignComment, 4, detachedForeignComment, 4] and point 34 [foreignDoc.body, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 54 [detachedForeignComment, 4, detachedForeignComment, 4] and point 35 [paras[0], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 54 [detachedForeignComment, 4, detachedForeignComment, 4] and point 36 [paras[0], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 54 [detachedForeignComment, 4, detachedForeignComment, 4] and point 37 [paras[0], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 54 [detachedForeignComment, 4, detachedForeignComment, 4] and point 38 [paras[1], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 54 [detachedForeignComment, 4, detachedForeignComment, 4] and point 39 [paras[1], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 54 [detachedForeignComment, 4, detachedForeignComment, 4] and point 40 [paras[1], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 54 [detachedForeignComment, 4, detachedForeignComment, 4] and point 41 [detachedPara1, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 54 [detachedForeignComment, 4, detachedForeignComment, 4] and point 42 [detachedPara1, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 54 [detachedForeignComment, 4, detachedForeignComment, 4] and point 43 [testDiv, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 54 [detachedForeignComment, 4, detachedForeignComment, 4] and point 44 [testDiv, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 54 [detachedForeignComment, 4, detachedForeignComment, 4] and point 45 [document, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 54 [detachedForeignComment, 4, detachedForeignComment, 4] and point 46 [document, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 54 [detachedForeignComment, 4, detachedForeignComment, 4] and point 47 [document, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 54 [detachedForeignComment, 4, detachedForeignComment, 4] and point 48 [document, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 54 [detachedForeignComment, 4, detachedForeignComment, 4] and point 49 [document, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 54 [detachedForeignComment, 4, detachedForeignComment, 4] and point 50 [comment, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 54 [detachedForeignComment, 4, detachedForeignComment, 4] and point 51 [comment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 54 [detachedForeignComment, 4, detachedForeignComment, 4] and point 52 [comment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 54 [detachedForeignComment, 4, detachedForeignComment, 4] and point 53 [comment, 96] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 54 [detachedForeignComment, 4, detachedForeignComment, 4] and point 54 [foreignDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 54 [detachedForeignComment, 4, detachedForeignComment, 4] and point 55 [foreignDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 54 [detachedForeignComment, 4, detachedForeignComment, 4] and point 56 [foreignComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 54 [detachedForeignComment, 4, detachedForeignComment, 4] and point 57 [foreignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 54 [detachedForeignComment, 4, detachedForeignComment, 4] and point 58 [foreignTextNode, 36] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 54 [detachedForeignComment, 4, detachedForeignComment, 4] and point 59 [xmlDoc, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 54 [detachedForeignComment, 4, detachedForeignComment, 4] and point 60 [xmlDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 54 [detachedForeignComment, 4, detachedForeignComment, 4] and point 61 [xmlDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 54 [detachedForeignComment, 4, detachedForeignComment, 4] and point 62 [xmlDoc, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 54 [detachedForeignComment, 4, detachedForeignComment, 4] and point 63 [xmlComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 54 [detachedForeignComment, 4, detachedForeignComment, 4] and point 64 [xmlComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 54 [detachedForeignComment, 4, detachedForeignComment, 4] and point 65 [processingInstruction, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 54 [detachedForeignComment, 4, detachedForeignComment, 4] and point 66 [processingInstruction, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 54 [detachedForeignComment, 4, detachedForeignComment, 4] and point 67 [processingInstruction, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 54 [detachedForeignComment, 4, detachedForeignComment, 4] and point 68 [detachedTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 54 [detachedForeignComment, 4, detachedForeignComment, 4] and point 69 [detachedTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 54 [detachedForeignComment, 4, detachedForeignComment, 4] and point 70 [detachedForeignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 54 [detachedForeignComment, 4, detachedForeignComment, 4] and point 71 [detachedForeignTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 54 [detachedForeignComment, 4, detachedForeignComment, 4] and point 72 [detachedXmlTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 54 [detachedForeignComment, 4, detachedForeignComment, 4] and point 73 [detachedXmlTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 54 [detachedForeignComment, 4, detachedForeignComment, 4] and point 74 [detachedProcessingInstruction, 12] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 54 [detachedForeignComment, 4, detachedForeignComment, 4] and point 75 [detachedComment, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 54 [detachedForeignComment, 4, detachedForeignComment, 4] and point 76 [detachedComment, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 54 [detachedForeignComment, 4, detachedForeignComment, 4] and point 77 [detachedForeignComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 54 [detachedForeignComment, 4, detachedForeignComment, 4] and point 78 [detachedForeignComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 54 [detachedForeignComment, 4, detachedForeignComment, 4] and point 79 [detachedXmlComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 54 [detachedForeignComment, 4, detachedForeignComment, 4] and point 80 [docfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 54 [detachedForeignComment, 4, detachedForeignComment, 4] and point 81 [foreignDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 54 [detachedForeignComment, 4, detachedForeignComment, 4] and point 82 [xmlDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 54 [detachedForeignComment, 4, detachedForeignComment, 4] and point 83 [doctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 54 [detachedForeignComment, 4, detachedForeignComment, 4] and point 84 [doctype, -17] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 54 [detachedForeignComment, 4, detachedForeignComment, 4] and point 85 [doctype, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 54 [detachedForeignComment, 4, detachedForeignComment, 4] and point 86 [foreignDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 54 [detachedForeignComment, 4, detachedForeignComment, 4] and point 87 [xmlDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 0 [paras[0].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 0 [paras[0].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 1 [paras[0].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 1 [paras[0].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 2 [paras[0].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 2 [paras[0].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 3 [paras[0].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 3 [paras[0].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 4 [paras[0].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 4 [paras[0].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 5 [paras[0].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 5 [paras[0].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 6 [paras[0].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 6 [paras[0].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 7 [paras[0].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 7 [paras[0].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 8 [paras[1].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 8 [paras[1].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 9 [paras[1].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 9 [paras[1].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 10 [paras[1].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 10 [paras[1].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 11 [paras[1].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 11 [paras[1].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 12 [paras[1].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 12 [paras[1].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 13 [paras[1].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 13 [paras[1].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 14 [paras[1].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 14 [paras[1].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 15 [paras[1].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 15 [paras[1].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 16 [detachedPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 16 [detachedPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 17 [detachedPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 17 [detachedPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 18 [detachedPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 18 [detachedPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 19 [detachedPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 19 [detachedPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 20 [foreignPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 20 [foreignPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 21 [foreignPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 21 [foreignPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 22 [foreignPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 22 [foreignPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 23 [foreignPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 23 [foreignPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 24 [document.documentElement, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 24 [document.documentElement, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 25 [document.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 25 [document.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 26 [document.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 26 [document.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 27 [document.documentElement, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 27 [document.documentElement, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 28 [document.documentElement, 7] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 28 [document.documentElement, 7] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 29 [document.head, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 29 [document.head, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 30 [document.body, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 30 [document.body, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 31 [foreignDoc.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 31 [foreignDoc.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 32 [foreignDoc.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 32 [foreignDoc.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 33 [foreignDoc.head, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 33 [foreignDoc.head, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 34 [foreignDoc.body, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 34 [foreignDoc.body, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 35 [paras[0], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 35 [paras[0], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 36 [paras[0], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 36 [paras[0], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 37 [paras[0], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 37 [paras[0], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 38 [paras[1], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 38 [paras[1], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 39 [paras[1], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 39 [paras[1], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 40 [paras[1], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 40 [paras[1], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 41 [detachedPara1, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 41 [detachedPara1, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 42 [detachedPara1, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 42 [detachedPara1, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 43 [testDiv, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 43 [testDiv, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 44 [testDiv, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 44 [testDiv, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 45 [document, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 45 [document, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 46 [document, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 46 [document, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 47 [document, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 47 [document, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 48 [document, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 48 [document, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 49 [document, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 49 [document, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 50 [comment, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 50 [comment, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 51 [comment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 51 [comment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 52 [comment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 52 [comment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 53 [comment, 96] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 53 [comment, 96] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 54 [foreignDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 54 [foreignDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 55 [foreignDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 55 [foreignDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 56 [foreignComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 56 [foreignComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 57 [foreignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 57 [foreignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 58 [foreignTextNode, 36] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 58 [foreignTextNode, 36] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 59 [xmlDoc, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 59 [xmlDoc, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 60 [xmlDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 60 [xmlDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 61 [xmlDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 61 [xmlDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 62 [xmlDoc, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 62 [xmlDoc, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 63 [xmlComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 63 [xmlComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 64 [xmlComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 64 [xmlComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 65 [processingInstruction, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 65 [processingInstruction, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 66 [processingInstruction, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 66 [processingInstruction, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 67 [processingInstruction, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 67 [processingInstruction, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 68 [detachedTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 68 [detachedTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 69 [detachedTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 69 [detachedTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 70 [detachedForeignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 70 [detachedForeignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 71 [detachedForeignTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 71 [detachedForeignTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 72 [detachedXmlTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 72 [detachedXmlTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 73 [detachedXmlTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 73 [detachedXmlTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 74 [detachedProcessingInstruction, 12] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 74 [detachedProcessingInstruction, 12] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 75 [detachedComment, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 75 [detachedComment, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 76 [detachedComment, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 76 [detachedComment, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 77 [detachedForeignComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 77 [detachedForeignComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 78 [detachedForeignComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 78 [detachedForeignComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 79 [detachedXmlComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 79 [detachedXmlComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 80 [docfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 80 [docfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 81 [foreignDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 81 [foreignDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 82 [xmlDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 82 [xmlDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 83 [doctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 83 [doctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 84 [doctype, -17] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 84 [doctype, -17] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 85 [doctype, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 85 [doctype, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 86 [foreignDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 86 [foreignDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() forwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 87 [xmlDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() backwards with range 55 [detachedXmlComment, 2, detachedXmlComment, 6] and point 87 [xmlDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 56 [docfrag, 0, docfrag, 0] and point 0 [paras[0].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 56 [docfrag, 0, docfrag, 0] and point 1 [paras[0].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 56 [docfrag, 0, docfrag, 0] and point 2 [paras[0].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 56 [docfrag, 0, docfrag, 0] and point 3 [paras[0].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 56 [docfrag, 0, docfrag, 0] and point 4 [paras[0].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 56 [docfrag, 0, docfrag, 0] and point 5 [paras[0].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 56 [docfrag, 0, docfrag, 0] and point 6 [paras[0].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 56 [docfrag, 0, docfrag, 0] and point 7 [paras[0].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 56 [docfrag, 0, docfrag, 0] and point 8 [paras[1].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 56 [docfrag, 0, docfrag, 0] and point 9 [paras[1].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 56 [docfrag, 0, docfrag, 0] and point 10 [paras[1].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 56 [docfrag, 0, docfrag, 0] and point 11 [paras[1].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 56 [docfrag, 0, docfrag, 0] and point 12 [paras[1].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 56 [docfrag, 0, docfrag, 0] and point 13 [paras[1].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 56 [docfrag, 0, docfrag, 0] and point 14 [paras[1].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 56 [docfrag, 0, docfrag, 0] and point 15 [paras[1].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 56 [docfrag, 0, docfrag, 0] and point 16 [detachedPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 56 [docfrag, 0, docfrag, 0] and point 17 [detachedPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 56 [docfrag, 0, docfrag, 0] and point 18 [detachedPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 56 [docfrag, 0, docfrag, 0] and point 19 [detachedPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 56 [docfrag, 0, docfrag, 0] and point 20 [foreignPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 56 [docfrag, 0, docfrag, 0] and point 21 [foreignPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 56 [docfrag, 0, docfrag, 0] and point 22 [foreignPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 56 [docfrag, 0, docfrag, 0] and point 23 [foreignPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 56 [docfrag, 0, docfrag, 0] and point 24 [document.documentElement, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 56 [docfrag, 0, docfrag, 0] and point 25 [document.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 56 [docfrag, 0, docfrag, 0] and point 26 [document.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 56 [docfrag, 0, docfrag, 0] and point 27 [document.documentElement, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 56 [docfrag, 0, docfrag, 0] and point 28 [document.documentElement, 7] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 56 [docfrag, 0, docfrag, 0] and point 29 [document.head, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 56 [docfrag, 0, docfrag, 0] and point 30 [document.body, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 56 [docfrag, 0, docfrag, 0] and point 31 [foreignDoc.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 56 [docfrag, 0, docfrag, 0] and point 32 [foreignDoc.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 56 [docfrag, 0, docfrag, 0] and point 33 [foreignDoc.head, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 56 [docfrag, 0, docfrag, 0] and point 34 [foreignDoc.body, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 56 [docfrag, 0, docfrag, 0] and point 35 [paras[0], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 56 [docfrag, 0, docfrag, 0] and point 36 [paras[0], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 56 [docfrag, 0, docfrag, 0] and point 37 [paras[0], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 56 [docfrag, 0, docfrag, 0] and point 38 [paras[1], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 56 [docfrag, 0, docfrag, 0] and point 39 [paras[1], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 56 [docfrag, 0, docfrag, 0] and point 40 [paras[1], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 56 [docfrag, 0, docfrag, 0] and point 41 [detachedPara1, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 56 [docfrag, 0, docfrag, 0] and point 42 [detachedPara1, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 56 [docfrag, 0, docfrag, 0] and point 43 [testDiv, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 56 [docfrag, 0, docfrag, 0] and point 44 [testDiv, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 56 [docfrag, 0, docfrag, 0] and point 45 [document, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 56 [docfrag, 0, docfrag, 0] and point 46 [document, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 56 [docfrag, 0, docfrag, 0] and point 47 [document, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 56 [docfrag, 0, docfrag, 0] and point 48 [document, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 56 [docfrag, 0, docfrag, 0] and point 49 [document, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 56 [docfrag, 0, docfrag, 0] and point 50 [comment, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 56 [docfrag, 0, docfrag, 0] and point 51 [comment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 56 [docfrag, 0, docfrag, 0] and point 52 [comment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 56 [docfrag, 0, docfrag, 0] and point 53 [comment, 96] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 56 [docfrag, 0, docfrag, 0] and point 54 [foreignDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 56 [docfrag, 0, docfrag, 0] and point 55 [foreignDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 56 [docfrag, 0, docfrag, 0] and point 56 [foreignComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 56 [docfrag, 0, docfrag, 0] and point 57 [foreignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 56 [docfrag, 0, docfrag, 0] and point 58 [foreignTextNode, 36] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 56 [docfrag, 0, docfrag, 0] and point 59 [xmlDoc, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 56 [docfrag, 0, docfrag, 0] and point 60 [xmlDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 56 [docfrag, 0, docfrag, 0] and point 61 [xmlDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 56 [docfrag, 0, docfrag, 0] and point 62 [xmlDoc, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 56 [docfrag, 0, docfrag, 0] and point 63 [xmlComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 56 [docfrag, 0, docfrag, 0] and point 64 [xmlComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 56 [docfrag, 0, docfrag, 0] and point 65 [processingInstruction, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 56 [docfrag, 0, docfrag, 0] and point 66 [processingInstruction, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 56 [docfrag, 0, docfrag, 0] and point 67 [processingInstruction, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 56 [docfrag, 0, docfrag, 0] and point 68 [detachedTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 56 [docfrag, 0, docfrag, 0] and point 69 [detachedTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 56 [docfrag, 0, docfrag, 0] and point 70 [detachedForeignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 56 [docfrag, 0, docfrag, 0] and point 71 [detachedForeignTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 56 [docfrag, 0, docfrag, 0] and point 72 [detachedXmlTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 56 [docfrag, 0, docfrag, 0] and point 73 [detachedXmlTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 56 [docfrag, 0, docfrag, 0] and point 74 [detachedProcessingInstruction, 12] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 56 [docfrag, 0, docfrag, 0] and point 75 [detachedComment, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 56 [docfrag, 0, docfrag, 0] and point 76 [detachedComment, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 56 [docfrag, 0, docfrag, 0] and point 77 [detachedForeignComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 56 [docfrag, 0, docfrag, 0] and point 78 [detachedForeignComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 56 [docfrag, 0, docfrag, 0] and point 79 [detachedXmlComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 56 [docfrag, 0, docfrag, 0] and point 80 [docfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 56 [docfrag, 0, docfrag, 0] and point 81 [foreignDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 56 [docfrag, 0, docfrag, 0] and point 82 [xmlDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 56 [docfrag, 0, docfrag, 0] and point 83 [doctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 56 [docfrag, 0, docfrag, 0] and point 84 [doctype, -17] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 56 [docfrag, 0, docfrag, 0] and point 85 [doctype, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 56 [docfrag, 0, docfrag, 0] and point 86 [foreignDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 56 [docfrag, 0, docfrag, 0] and point 87 [xmlDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 57 [foreignDocfrag, 0, foreignDocfrag, 0] and point 0 [paras[0].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 57 [foreignDocfrag, 0, foreignDocfrag, 0] and point 1 [paras[0].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 57 [foreignDocfrag, 0, foreignDocfrag, 0] and point 2 [paras[0].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 57 [foreignDocfrag, 0, foreignDocfrag, 0] and point 3 [paras[0].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 57 [foreignDocfrag, 0, foreignDocfrag, 0] and point 4 [paras[0].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 57 [foreignDocfrag, 0, foreignDocfrag, 0] and point 5 [paras[0].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 57 [foreignDocfrag, 0, foreignDocfrag, 0] and point 6 [paras[0].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 57 [foreignDocfrag, 0, foreignDocfrag, 0] and point 7 [paras[0].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 57 [foreignDocfrag, 0, foreignDocfrag, 0] and point 8 [paras[1].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 57 [foreignDocfrag, 0, foreignDocfrag, 0] and point 9 [paras[1].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 57 [foreignDocfrag, 0, foreignDocfrag, 0] and point 10 [paras[1].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 57 [foreignDocfrag, 0, foreignDocfrag, 0] and point 11 [paras[1].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 57 [foreignDocfrag, 0, foreignDocfrag, 0] and point 12 [paras[1].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 57 [foreignDocfrag, 0, foreignDocfrag, 0] and point 13 [paras[1].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 57 [foreignDocfrag, 0, foreignDocfrag, 0] and point 14 [paras[1].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 57 [foreignDocfrag, 0, foreignDocfrag, 0] and point 15 [paras[1].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 57 [foreignDocfrag, 0, foreignDocfrag, 0] and point 16 [detachedPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 57 [foreignDocfrag, 0, foreignDocfrag, 0] and point 17 [detachedPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 57 [foreignDocfrag, 0, foreignDocfrag, 0] and point 18 [detachedPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 57 [foreignDocfrag, 0, foreignDocfrag, 0] and point 19 [detachedPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 57 [foreignDocfrag, 0, foreignDocfrag, 0] and point 20 [foreignPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 57 [foreignDocfrag, 0, foreignDocfrag, 0] and point 21 [foreignPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 57 [foreignDocfrag, 0, foreignDocfrag, 0] and point 22 [foreignPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 57 [foreignDocfrag, 0, foreignDocfrag, 0] and point 23 [foreignPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 57 [foreignDocfrag, 0, foreignDocfrag, 0] and point 24 [document.documentElement, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 57 [foreignDocfrag, 0, foreignDocfrag, 0] and point 25 [document.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 57 [foreignDocfrag, 0, foreignDocfrag, 0] and point 26 [document.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 57 [foreignDocfrag, 0, foreignDocfrag, 0] and point 27 [document.documentElement, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 57 [foreignDocfrag, 0, foreignDocfrag, 0] and point 28 [document.documentElement, 7] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 57 [foreignDocfrag, 0, foreignDocfrag, 0] and point 29 [document.head, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 57 [foreignDocfrag, 0, foreignDocfrag, 0] and point 30 [document.body, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 57 [foreignDocfrag, 0, foreignDocfrag, 0] and point 31 [foreignDoc.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 57 [foreignDocfrag, 0, foreignDocfrag, 0] and point 32 [foreignDoc.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 57 [foreignDocfrag, 0, foreignDocfrag, 0] and point 33 [foreignDoc.head, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 57 [foreignDocfrag, 0, foreignDocfrag, 0] and point 34 [foreignDoc.body, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 57 [foreignDocfrag, 0, foreignDocfrag, 0] and point 35 [paras[0], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 57 [foreignDocfrag, 0, foreignDocfrag, 0] and point 36 [paras[0], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 57 [foreignDocfrag, 0, foreignDocfrag, 0] and point 37 [paras[0], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 57 [foreignDocfrag, 0, foreignDocfrag, 0] and point 38 [paras[1], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 57 [foreignDocfrag, 0, foreignDocfrag, 0] and point 39 [paras[1], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 57 [foreignDocfrag, 0, foreignDocfrag, 0] and point 40 [paras[1], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 57 [foreignDocfrag, 0, foreignDocfrag, 0] and point 41 [detachedPara1, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 57 [foreignDocfrag, 0, foreignDocfrag, 0] and point 42 [detachedPara1, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 57 [foreignDocfrag, 0, foreignDocfrag, 0] and point 43 [testDiv, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 57 [foreignDocfrag, 0, foreignDocfrag, 0] and point 44 [testDiv, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 57 [foreignDocfrag, 0, foreignDocfrag, 0] and point 45 [document, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 57 [foreignDocfrag, 0, foreignDocfrag, 0] and point 46 [document, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 57 [foreignDocfrag, 0, foreignDocfrag, 0] and point 47 [document, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 57 [foreignDocfrag, 0, foreignDocfrag, 0] and point 48 [document, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 57 [foreignDocfrag, 0, foreignDocfrag, 0] and point 49 [document, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 57 [foreignDocfrag, 0, foreignDocfrag, 0] and point 50 [comment, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 57 [foreignDocfrag, 0, foreignDocfrag, 0] and point 51 [comment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 57 [foreignDocfrag, 0, foreignDocfrag, 0] and point 52 [comment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 57 [foreignDocfrag, 0, foreignDocfrag, 0] and point 53 [comment, 96] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 57 [foreignDocfrag, 0, foreignDocfrag, 0] and point 54 [foreignDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 57 [foreignDocfrag, 0, foreignDocfrag, 0] and point 55 [foreignDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 57 [foreignDocfrag, 0, foreignDocfrag, 0] and point 56 [foreignComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 57 [foreignDocfrag, 0, foreignDocfrag, 0] and point 57 [foreignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 57 [foreignDocfrag, 0, foreignDocfrag, 0] and point 58 [foreignTextNode, 36] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 57 [foreignDocfrag, 0, foreignDocfrag, 0] and point 59 [xmlDoc, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 57 [foreignDocfrag, 0, foreignDocfrag, 0] and point 60 [xmlDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 57 [foreignDocfrag, 0, foreignDocfrag, 0] and point 61 [xmlDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 57 [foreignDocfrag, 0, foreignDocfrag, 0] and point 62 [xmlDoc, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 57 [foreignDocfrag, 0, foreignDocfrag, 0] and point 63 [xmlComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 57 [foreignDocfrag, 0, foreignDocfrag, 0] and point 64 [xmlComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 57 [foreignDocfrag, 0, foreignDocfrag, 0] and point 65 [processingInstruction, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 57 [foreignDocfrag, 0, foreignDocfrag, 0] and point 66 [processingInstruction, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 57 [foreignDocfrag, 0, foreignDocfrag, 0] and point 67 [processingInstruction, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 57 [foreignDocfrag, 0, foreignDocfrag, 0] and point 68 [detachedTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 57 [foreignDocfrag, 0, foreignDocfrag, 0] and point 69 [detachedTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 57 [foreignDocfrag, 0, foreignDocfrag, 0] and point 70 [detachedForeignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 57 [foreignDocfrag, 0, foreignDocfrag, 0] and point 71 [detachedForeignTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 57 [foreignDocfrag, 0, foreignDocfrag, 0] and point 72 [detachedXmlTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 57 [foreignDocfrag, 0, foreignDocfrag, 0] and point 73 [detachedXmlTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 57 [foreignDocfrag, 0, foreignDocfrag, 0] and point 74 [detachedProcessingInstruction, 12] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 57 [foreignDocfrag, 0, foreignDocfrag, 0] and point 75 [detachedComment, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 57 [foreignDocfrag, 0, foreignDocfrag, 0] and point 76 [detachedComment, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 57 [foreignDocfrag, 0, foreignDocfrag, 0] and point 77 [detachedForeignComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 57 [foreignDocfrag, 0, foreignDocfrag, 0] and point 78 [detachedForeignComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 57 [foreignDocfrag, 0, foreignDocfrag, 0] and point 79 [detachedXmlComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 57 [foreignDocfrag, 0, foreignDocfrag, 0] and point 80 [docfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 57 [foreignDocfrag, 0, foreignDocfrag, 0] and point 81 [foreignDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 57 [foreignDocfrag, 0, foreignDocfrag, 0] and point 82 [xmlDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 57 [foreignDocfrag, 0, foreignDocfrag, 0] and point 83 [doctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 57 [foreignDocfrag, 0, foreignDocfrag, 0] and point 84 [doctype, -17] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 57 [foreignDocfrag, 0, foreignDocfrag, 0] and point 85 [doctype, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 57 [foreignDocfrag, 0, foreignDocfrag, 0] and point 86 [foreignDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 57 [foreignDocfrag, 0, foreignDocfrag, 0] and point 87 [xmlDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 58 [xmlDocfrag, 0, xmlDocfrag, 0] and point 0 [paras[0].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 58 [xmlDocfrag, 0, xmlDocfrag, 0] and point 1 [paras[0].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 58 [xmlDocfrag, 0, xmlDocfrag, 0] and point 2 [paras[0].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 58 [xmlDocfrag, 0, xmlDocfrag, 0] and point 3 [paras[0].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 58 [xmlDocfrag, 0, xmlDocfrag, 0] and point 4 [paras[0].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 58 [xmlDocfrag, 0, xmlDocfrag, 0] and point 5 [paras[0].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 58 [xmlDocfrag, 0, xmlDocfrag, 0] and point 6 [paras[0].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 58 [xmlDocfrag, 0, xmlDocfrag, 0] and point 7 [paras[0].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 58 [xmlDocfrag, 0, xmlDocfrag, 0] and point 8 [paras[1].firstChild, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 58 [xmlDocfrag, 0, xmlDocfrag, 0] and point 9 [paras[1].firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 58 [xmlDocfrag, 0, xmlDocfrag, 0] and point 10 [paras[1].firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 58 [xmlDocfrag, 0, xmlDocfrag, 0] and point 11 [paras[1].firstChild, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 58 [xmlDocfrag, 0, xmlDocfrag, 0] and point 12 [paras[1].firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 58 [xmlDocfrag, 0, xmlDocfrag, 0] and point 13 [paras[1].firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 58 [xmlDocfrag, 0, xmlDocfrag, 0] and point 14 [paras[1].firstChild, 10] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 58 [xmlDocfrag, 0, xmlDocfrag, 0] and point 15 [paras[1].firstChild, 65535] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 58 [xmlDocfrag, 0, xmlDocfrag, 0] and point 16 [detachedPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 58 [xmlDocfrag, 0, xmlDocfrag, 0] and point 17 [detachedPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 58 [xmlDocfrag, 0, xmlDocfrag, 0] and point 18 [detachedPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 58 [xmlDocfrag, 0, xmlDocfrag, 0] and point 19 [detachedPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 58 [xmlDocfrag, 0, xmlDocfrag, 0] and point 20 [foreignPara1.firstChild, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 58 [xmlDocfrag, 0, xmlDocfrag, 0] and point 21 [foreignPara1.firstChild, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 58 [xmlDocfrag, 0, xmlDocfrag, 0] and point 22 [foreignPara1.firstChild, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 58 [xmlDocfrag, 0, xmlDocfrag, 0] and point 23 [foreignPara1.firstChild, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 58 [xmlDocfrag, 0, xmlDocfrag, 0] and point 24 [document.documentElement, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 58 [xmlDocfrag, 0, xmlDocfrag, 0] and point 25 [document.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 58 [xmlDocfrag, 0, xmlDocfrag, 0] and point 26 [document.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 58 [xmlDocfrag, 0, xmlDocfrag, 0] and point 27 [document.documentElement, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 58 [xmlDocfrag, 0, xmlDocfrag, 0] and point 28 [document.documentElement, 7] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 58 [xmlDocfrag, 0, xmlDocfrag, 0] and point 29 [document.head, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 58 [xmlDocfrag, 0, xmlDocfrag, 0] and point 30 [document.body, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 58 [xmlDocfrag, 0, xmlDocfrag, 0] and point 31 [foreignDoc.documentElement, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 58 [xmlDocfrag, 0, xmlDocfrag, 0] and point 32 [foreignDoc.documentElement, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 58 [xmlDocfrag, 0, xmlDocfrag, 0] and point 33 [foreignDoc.head, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 58 [xmlDocfrag, 0, xmlDocfrag, 0] and point 34 [foreignDoc.body, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 58 [xmlDocfrag, 0, xmlDocfrag, 0] and point 35 [paras[0], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 58 [xmlDocfrag, 0, xmlDocfrag, 0] and point 36 [paras[0], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 58 [xmlDocfrag, 0, xmlDocfrag, 0] and point 37 [paras[0], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 58 [xmlDocfrag, 0, xmlDocfrag, 0] and point 38 [paras[1], 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 58 [xmlDocfrag, 0, xmlDocfrag, 0] and point 39 [paras[1], 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 58 [xmlDocfrag, 0, xmlDocfrag, 0] and point 40 [paras[1], 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 58 [xmlDocfrag, 0, xmlDocfrag, 0] and point 41 [detachedPara1, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 58 [xmlDocfrag, 0, xmlDocfrag, 0] and point 42 [detachedPara1, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 58 [xmlDocfrag, 0, xmlDocfrag, 0] and point 43 [testDiv, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 58 [xmlDocfrag, 0, xmlDocfrag, 0] and point 44 [testDiv, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 58 [xmlDocfrag, 0, xmlDocfrag, 0] and point 45 [document, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 58 [xmlDocfrag, 0, xmlDocfrag, 0] and point 46 [document, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 58 [xmlDocfrag, 0, xmlDocfrag, 0] and point 47 [document, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 58 [xmlDocfrag, 0, xmlDocfrag, 0] and point 48 [document, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 58 [xmlDocfrag, 0, xmlDocfrag, 0] and point 49 [document, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 58 [xmlDocfrag, 0, xmlDocfrag, 0] and point 50 [comment, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 58 [xmlDocfrag, 0, xmlDocfrag, 0] and point 51 [comment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 58 [xmlDocfrag, 0, xmlDocfrag, 0] and point 52 [comment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 58 [xmlDocfrag, 0, xmlDocfrag, 0] and point 53 [comment, 96] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 58 [xmlDocfrag, 0, xmlDocfrag, 0] and point 54 [foreignDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 58 [xmlDocfrag, 0, xmlDocfrag, 0] and point 55 [foreignDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 58 [xmlDocfrag, 0, xmlDocfrag, 0] and point 56 [foreignComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 58 [xmlDocfrag, 0, xmlDocfrag, 0] and point 57 [foreignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 58 [xmlDocfrag, 0, xmlDocfrag, 0] and point 58 [foreignTextNode, 36] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 58 [xmlDocfrag, 0, xmlDocfrag, 0] and point 59 [xmlDoc, -1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 58 [xmlDocfrag, 0, xmlDocfrag, 0] and point 60 [xmlDoc, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 58 [xmlDocfrag, 0, xmlDocfrag, 0] and point 61 [xmlDoc, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 58 [xmlDocfrag, 0, xmlDocfrag, 0] and point 62 [xmlDoc, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 58 [xmlDocfrag, 0, xmlDocfrag, 0] and point 63 [xmlComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 58 [xmlDocfrag, 0, xmlDocfrag, 0] and point 64 [xmlComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 58 [xmlDocfrag, 0, xmlDocfrag, 0] and point 65 [processingInstruction, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 58 [xmlDocfrag, 0, xmlDocfrag, 0] and point 66 [processingInstruction, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 58 [xmlDocfrag, 0, xmlDocfrag, 0] and point 67 [processingInstruction, 9] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 58 [xmlDocfrag, 0, xmlDocfrag, 0] and point 68 [detachedTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 58 [xmlDocfrag, 0, xmlDocfrag, 0] and point 69 [detachedTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 58 [xmlDocfrag, 0, xmlDocfrag, 0] and point 70 [detachedForeignTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 58 [xmlDocfrag, 0, xmlDocfrag, 0] and point 71 [detachedForeignTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 58 [xmlDocfrag, 0, xmlDocfrag, 0] and point 72 [detachedXmlTextNode, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 58 [xmlDocfrag, 0, xmlDocfrag, 0] and point 73 [detachedXmlTextNode, 8] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 58 [xmlDocfrag, 0, xmlDocfrag, 0] and point 74 [detachedProcessingInstruction, 12] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 58 [xmlDocfrag, 0, xmlDocfrag, 0] and point 75 [detachedComment, 3] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 58 [xmlDocfrag, 0, xmlDocfrag, 0] and point 76 [detachedComment, 5] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 58 [xmlDocfrag, 0, xmlDocfrag, 0] and point 77 [detachedForeignComment, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 58 [xmlDocfrag, 0, xmlDocfrag, 0] and point 78 [detachedForeignComment, 4] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 58 [xmlDocfrag, 0, xmlDocfrag, 0] and point 79 [detachedXmlComment, 2] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 58 [xmlDocfrag, 0, xmlDocfrag, 0] and point 80 [docfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 58 [xmlDocfrag, 0, xmlDocfrag, 0] and point 81 [foreignDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 58 [xmlDocfrag, 0, xmlDocfrag, 0] and point 82 [xmlDocfrag, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 58 [xmlDocfrag, 0, xmlDocfrag, 0] and point 83 [doctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 58 [xmlDocfrag, 0, xmlDocfrag, 0] and point 84 [doctype, -17] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 58 [xmlDocfrag, 0, xmlDocfrag, 0] and point 85 [doctype, 1] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 58 [xmlDocfrag, 0, xmlDocfrag, 0] and point 86 [foreignDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
-FAIL extend() with range 58 [xmlDocfrag, 0, xmlDocfrag, 0] and point 87 [xmlDoctype, 0] assert_equals: Sanity check: rangeCount must be correct expected 1 but got 0
 Harness: the test ran to completion.
 
diff --git a/third_party/WebKit/LayoutTests/external/wpt/selection/extend.js b/third_party/WebKit/LayoutTests/external/wpt/selection/extend.js
index 6a2307e..a3be628 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/selection/extend.js
+++ b/third_party/WebKit/LayoutTests/external/wpt/selection/extend.js
@@ -23,6 +23,9 @@
     // selections only once.
     for (var i = startIndex; i < endIndex; i++) {
         var endpoints = eval(testRanges[i]);
+        // We can't test extend() with unselectable endpoints.
+        if (!isSelectableNode(endpoints[0]) || !isSelectableNode(endpoints[2]))
+            continue;
         for (var j = 0; j < testPoints.length; j++) {
             if (endpoints[0] == endpoints[2]
             && endpoints[1] == endpoints[3]) {
diff --git a/third_party/WebKit/LayoutTests/fast/forms/range/range-drag-expected.txt b/third_party/WebKit/LayoutTests/fast/forms/range/range-drag-expected.txt
index 579e36f..5398bda 100644
--- a/third_party/WebKit/LayoutTests/fast/forms/range/range-drag-expected.txt
+++ b/third_party/WebKit/LayoutTests/fast/forms/range/range-drag-expected.txt
@@ -5,8 +5,8 @@
 PASS input.value is "100"
 PASS changeEventCounter is >= lastChangeEventCounter + 1
 readOnly=true
-PASS input.value is "50"
-PASS lastChangeEventCounter is changeEventCounter
+PASS input.value is "100"
+PASS changeEventCounter is >= lastChangeEventCounter + 1
 disabled=true
 PASS input.value is "50"
 PASS lastChangeEventCounter is changeEventCounter
@@ -16,8 +16,8 @@
 PASS input.value is "100"
 PASS changeEventCounter is >= lastChangeEventCounter + 1
 readOnly=true
-PASS input.value is "50"
-PASS lastChangeEventCounter is changeEventCounter
+PASS input.value is "100"
+PASS changeEventCounter is >= lastChangeEventCounter + 1
 disabled=true
 PASS input.value is "50"
 PASS lastChangeEventCounter is changeEventCounter
diff --git a/third_party/WebKit/LayoutTests/fast/forms/range/range-drag.html b/third_party/WebKit/LayoutTests/fast/forms/range/range-drag.html
index 96d62ed..c8b0fea 100644
--- a/third_party/WebKit/LayoutTests/fast/forms/range/range-drag.html
+++ b/third_party/WebKit/LayoutTests/fast/forms/range/range-drag.html
@@ -51,8 +51,8 @@
     input.valueAsNumber = 50;
     lastChangeEventCounter = changeEventCounter;
     dragMouse();
-    shouldBe('input.value', '"50"');
-    shouldBe('lastChangeEventCounter', 'changeEventCounter');
+    shouldBe('input.value', '"100"');
+    shouldBeGreaterThanOrEqual('changeEventCounter', 'lastChangeEventCounter + 1');
 
     debug('disabled=true');
     input.readOnly = false;
diff --git a/third_party/WebKit/LayoutTests/fast/mediarecorder/MediaRecorder-error.html b/third_party/WebKit/LayoutTests/fast/mediarecorder/MediaRecorder-error.html
new file mode 100644
index 0000000..d4aa434
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/fast/mediarecorder/MediaRecorder-error.html
@@ -0,0 +1,60 @@
+<!DOCTYPE html>
+<script src=../../resources/testharness.js></script>
+<script src=../../resources/testharnessreport.js></script>
+<body>
+  <!-- canvas cannot be arbitrarily small -->
+  <canvas id='canvas'/>
+</body>
+<script>
+
+var test = async_test('forces an error in the MediaRecorder API by changing ' +
+    'the amount of tracks in the MediaStream, and checks that the correct ' +
+    'sequence ondataavailable-stop-error is enforced');
+var recorder;
+var stream;
+
+function drawSomethingOnCanvas(canvas) {
+  // Drawing something on the canvas generates a frame in its captured stream.
+  var context = canvas.getContext("2d");
+  context.fillStyle = "red";
+  context.fillRect(0, 0, 10, 10);
+}
+
+recorderOnDataAvailable = test.step_func(function(event) {
+  recorder.onstop = recorderOnStop;
+
+  // Add another track to the MediaStream to force an error.
+  stream.addTrack(stream.getVideoTracks()[0].clone());
+  drawSomethingOnCanvas(document.getElementById('canvas'));
+});
+
+recorderOnStop = test.step_func(function() {
+  recorder.onstop = test.unreached_func('Unexpected stop event');
+  recorder.ondataavailable = test.unreached_func('Unexpected data event');
+  recorder.onerror = recorderOnError;
+});
+
+recorderOnError = test.step_func(function() {
+  test.done();
+});
+
+var step = test.step_func(function() {
+  var canvas = document.getElementById('canvas');
+  stream = canvas.captureStream();
+  assert_equals(stream.getVideoTracks()[0].readyState, 'live');
+
+  recorder = new MediaRecorder(stream);
+
+  recorder.onstop = test.unreached_func('Unexpected stop event');
+  recorder.onpause = test.unreached_func('Unexpected pause event');
+  recorder.onresume = test.unreached_func('Unexpected resume event');
+  recorder.onerror = test.unreached_func('Unexpected error event');
+  recorder.ondataavailable = recorderOnDataAvailable;
+
+  recorder.start(0);
+  drawSomethingOnCanvas(canvas);
+});
+
+step();
+
+</script>
diff --git a/third_party/WebKit/Source/build/scripts/make_computed_style_base.py b/third_party/WebKit/Source/build/scripts/make_computed_style_base.py
index a24ebf77..1367b7f1 100755
--- a/third_party/WebKit/Source/build/scripts/make_computed_style_base.py
+++ b/third_party/WebKit/Source/build/scripts/make_computed_style_base.py
@@ -49,8 +49,6 @@
         'property_name',
         # Name of the type (e.g. EClear, int)
         'type_name',
-        # Path to predefined class for overriding generated types.
-        'field_type_path',
         # Affects how the field is generated (keyword, flag)
         'field_template',
         # Bits needed for storage
@@ -90,6 +88,17 @@
         assert len(kwargs) == 0, 'Unexpected arguments provided to Field: ' + str(kwargs)
 
 
+def _get_include_paths(properties):
+    """
+    Get a list of paths that need to be included for ComputedStyleBase.
+    """
+    include_paths = set()
+    for property_ in properties:
+        if property_['field_type_path'] is not None:
+            include_paths.add(property_['field_type_path'] + '.h')
+    return list(sorted(include_paths))
+
+
 def _create_enums(properties):
     """
     Returns a dictionary of enums to be generated, enum name -> [list of enum values]
@@ -127,10 +136,8 @@
 
     # Separate the type path from the type name, if specified.
     if property_['field_type_path']:
-        field_type_path = property_['field_type_path']
-        type_name = field_type_path.split('/')[-1]
+        type_name = property_['field_type_path'].split('/')[-1]
     else:
-        field_type_path = None
         type_name = property_['type_name']
 
     # For now, the getter name should match the field name. Later, getter names
@@ -152,7 +159,6 @@
         inherited=property_['inherited'],
         independent=property_['independent'],
         type_name=type_name,
-        field_type_path=field_type_path,
         field_template=property_['field_template'],
         size=int(math.ceil(bits_needed)),
         default_value=default_value,
@@ -180,7 +186,6 @@
         name='m_' + field_name_suffix_lower,
         property_name=property_['name'],
         type_name='bool',
-        field_type_path=None,
         field_template='flag',
         size=1,
         default_value='true',
@@ -203,7 +208,6 @@
         name=member_name,
         property_name=field_name,
         type_name='bool',
-        field_type_path=None,
         field_template='flag',
         size=1,
         default_value='false',
@@ -318,6 +322,7 @@
         return {
             'properties': self._properties,
             'enums': self._generated_enums,
+            'include_paths': _get_include_paths(self._properties.values()),
             'fields': self._fields,
             'expected_total_field_bytes': self._expected_total_field_bytes,
         }
diff --git a/third_party/WebKit/Source/build/scripts/make_css_property_apis.py b/third_party/WebKit/Source/build/scripts/make_css_property_apis.py
index 95ab014a..ed317cd 100755
--- a/third_party/WebKit/Source/build/scripts/make_css_property_apis.py
+++ b/third_party/WebKit/Source/build/scripts/make_css_property_apis.py
@@ -14,7 +14,7 @@
 from make_style_builder import StyleBuilderWriter
 
 
-class ApiMethod(namedtuple('ApiMethod', 'return_type,parameters')):
+class ApiMethod(namedtuple('ApiMethod', 'return_type,parameters,description')):
     pass
 
 
@@ -44,6 +44,7 @@
 
         self._outputs = {
             'CSSPropertyDescriptor.cpp': self.generate_property_descriptor_cpp,
+            'CSSPropertyAPI.h': self.generate_property_api,
         }
 
         # Stores a map of API method name -> (return_type, parameters)
@@ -53,9 +54,11 @@
         self.ordered_api_method_names = []
         for api_method in self.css_property_api_methods.name_dictionaries:
             self.ordered_api_method_names.append(api_method['name'])
+            # TODO(shend): wrap description to 72 chars
             self.all_api_methods[api_method['name']] = ApiMethod(
                 return_type=api_method['return_type'],
                 parameters=api_method['parameters'],
+                description=api_method['description'],
             )
 
         # Temporary map of API classname to list of propertyIDs that the API class is for.
@@ -90,6 +93,13 @@
             'ordered_api_method_names': self.ordered_api_method_names,
         }
 
+    @template_expander.use_jinja('CSSPropertyAPI.h.tmpl')
+    def generate_property_api(self):
+        return {
+            'ordered_api_method_names': self.ordered_api_method_names,
+            'all_api_methods': self.all_api_methods,
+        }
+
     # Provides a function object given the classname of the property.
     def generate_property_api_h_builder(self, api_classname):
         @template_expander.use_jinja('CSSPropertyAPIFiles.h.tmpl')
diff --git a/third_party/WebKit/Source/build/scripts/templates/CSSPropertyAPI.h.tmpl b/third_party/WebKit/Source/build/scripts/templates/CSSPropertyAPI.h.tmpl
new file mode 100644
index 0000000..5f996a0
--- /dev/null
+++ b/third_party/WebKit/Source/build/scripts/templates/CSSPropertyAPI.h.tmpl
@@ -0,0 +1,46 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CSSPropertyAPI_h
+#define CSSPropertyAPI_h
+
+#include "core/CSSPropertyNames.h"
+#include "wtf/Allocator.h"
+
+namespace blink {
+
+class CSSValue;
+class CSSParserContext;
+class CSSParserTokenRange;
+
+// We will use this API to represent all functions used for property-specific
+// logic inside the blink style engine. All specific properties are subclasses
+// of CSSPropertyAPI.
+//
+// To add a new implementation of this API for a property:
+// - Make a class that implements CSSPropertyAPI.
+// - For each method that you wish to implement in this class, add this method
+//   name to the api_methods flag in CSSProperties.json5.
+// - Implement these methods in the .cpp file.
+//
+// To add new functions to this API:
+// - Add the function to the struct below.
+// - Add the function name to the valid_values field for api_methods in
+//   CSSProperties.json5.
+class CSSPropertyAPI {
+  STATIC_ONLY(CSSPropertyAPI);
+
+ public:
+  {% for api_method_name in ordered_api_method_names %}
+  {% set api_method = all_api_methods[api_method_name] %}
+  {% if api_method.description %}
+  // {{api_method.description}}
+  {% endif %}
+  static {{api_method.return_type}} {{api_method_name}}{{api_method.parameters}};
+  {% endfor %}
+};
+
+} // namespace blink
+
+#endif // CSSPropertyAPI_h
diff --git a/third_party/WebKit/Source/build/scripts/templates/ComputedStyleBase.h.tmpl b/third_party/WebKit/Source/build/scripts/templates/ComputedStyleBase.h.tmpl
index 738b7249..8c7a5c4 100644
--- a/third_party/WebKit/Source/build/scripts/templates/ComputedStyleBase.h.tmpl
+++ b/third_party/WebKit/Source/build/scripts/templates/ComputedStyleBase.h.tmpl
@@ -6,8 +6,8 @@
 
 #include "core/ComputedStyleBaseConstants.h"
 #include "core/CoreExport.h"
-{% for field in fields if field.field_type_path != None %}
-#include "{{field.field_type_path}}.h"
+{% for path in include_paths %}
+#include "{{path}}"
 {% endfor %}
 
 {# Returns the default value for the field, converted to fit in the storage container. #}
diff --git a/third_party/WebKit/Source/core/BUILD.gn b/third_party/WebKit/Source/core/BUILD.gn
index eb820f2..4345d43 100644
--- a/third_party/WebKit/Source/core/BUILD.gn
+++ b/third_party/WebKit/Source/core/BUILD.gn
@@ -418,10 +418,12 @@
   other_inputs = [
     "../build/scripts/templates/CSSPropertyDescriptor.cpp.tmpl",
     "../build/scripts/templates/CSSPropertyAPIFiles.h.tmpl",
+    "../build/scripts/templates/CSSPropertyAPI.h.tmpl",
   ]
   in_files = [ "css/properties/CSSPropertyAPIMethods.json5" ]
   outputs = [
     "$blink_core_output_dir/css/properties/CSSPropertyDescriptor.cpp",
+    "$blink_core_output_dir/css/properties/CSSPropertyAPI.h",
     "$blink_core_output_dir/css/properties/CSSPropertyAPIColumnCount.h",
     "$blink_core_output_dir/css/properties/CSSPropertyAPIVerticalAlign.h",
     "$blink_core_output_dir/css/properties/CSSPropertyAPIClipPath.h",
diff --git a/third_party/WebKit/Source/core/animation/BUILD.gn b/third_party/WebKit/Source/core/animation/BUILD.gn
index e584072..bccd78f 100644
--- a/third_party/WebKit/Source/core/animation/BUILD.gn
+++ b/third_party/WebKit/Source/core/animation/BUILD.gn
@@ -25,6 +25,8 @@
     "BasicShapeInterpolationFunctions.cpp",
     "BasicShapeInterpolationFunctions.h",
     "BorderImageLengthBoxPropertyFunctions.h",
+    "CSSAngleInterpolationType.cpp",
+    "CSSAngleInterpolationType.h",
     "CSSBasicShapeInterpolationType.cpp",
     "CSSBasicShapeInterpolationType.h",
     "CSSBorderImageLengthBoxInterpolationType.cpp",
@@ -75,6 +77,8 @@
     "CSSSizeListInterpolationType.h",
     "CSSTextIndentInterpolationType.cpp",
     "CSSTextIndentInterpolationType.h",
+    "CSSTimeInterpolationType.cpp",
+    "CSSTimeInterpolationType.h",
     "CSSTransformInterpolationType.cpp",
     "CSSTransformInterpolationType.h",
     "CSSTransformOriginInterpolationType.h",
@@ -205,6 +209,8 @@
     "TimingInput.h",
     "TransitionInterpolation.cpp",
     "TransitionInterpolation.h",
+    "TransitionKeyframe.cpp",
+    "TransitionKeyframe.h",
     "TypedInterpolationValue.h",
     "UnderlyingValueOwner.cpp",
     "UnderlyingValueOwner.h",
diff --git a/third_party/WebKit/Source/core/animation/CSSAngleInterpolationType.cpp b/third_party/WebKit/Source/core/animation/CSSAngleInterpolationType.cpp
new file mode 100644
index 0000000..c8f9a949
--- /dev/null
+++ b/third_party/WebKit/Source/core/animation/CSSAngleInterpolationType.cpp
@@ -0,0 +1,35 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "core/animation/CSSAngleInterpolationType.h"
+
+#include "core/css/CSSPrimitiveValue.h"
+
+namespace blink {
+
+InterpolationValue CSSAngleInterpolationType::maybeConvertNeutral(
+    const InterpolationValue&,
+    ConversionCheckers&) const {
+  return InterpolationValue(InterpolableNumber::create(0));
+}
+
+InterpolationValue CSSAngleInterpolationType::maybeConvertValue(
+    const CSSValue& value,
+    const StyleResolverState*,
+    ConversionCheckers&) const {
+  if (!value.isPrimitiveValue() || !toCSSPrimitiveValue(value).isAngle())
+    return nullptr;
+  return InterpolationValue(
+      InterpolableNumber::create(toCSSPrimitiveValue(value).computeDegrees()));
+}
+
+const CSSValue* CSSAngleInterpolationType::createCSSValue(
+    const InterpolableValue& value,
+    const NonInterpolableValue*,
+    const StyleResolverState&) const {
+  return CSSPrimitiveValue::create(toInterpolableNumber(value).value(),
+                                   CSSPrimitiveValue::UnitType::Degrees);
+}
+
+}  // namespace blink
diff --git a/third_party/WebKit/Source/core/animation/CSSAngleInterpolationType.h b/third_party/WebKit/Source/core/animation/CSSAngleInterpolationType.h
new file mode 100644
index 0000000..5455828
--- /dev/null
+++ b/third_party/WebKit/Source/core/animation/CSSAngleInterpolationType.h
@@ -0,0 +1,58 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CSSAngleInterpolationType_h
+#define CSSAngleInterpolationType_h
+
+#include "core/animation/CSSInterpolationType.h"
+
+namespace blink {
+
+class CSSAngleInterpolationType : public CSSInterpolationType {
+ public:
+  CSSAngleInterpolationType(PropertyHandle property)
+      : CSSInterpolationType(property) {
+    DCHECK(property.isCSSCustomProperty());
+  }
+
+  InterpolationValue maybeConvertNeutral(const InterpolationValue& underlying,
+                                         ConversionCheckers&) const final;
+  InterpolationValue maybeConvertValue(const CSSValue&,
+                                       const StyleResolverState*,
+                                       ConversionCheckers&) const final;
+
+  const CSSValue* createCSSValue(const InterpolableValue&,
+                                 const NonInterpolableValue*,
+                                 const StyleResolverState&) const final;
+
+ private:
+  // These methods only apply to CSSInterpolationTypes used by standard CSS
+  // properties.
+  // CSSAngleInterpolationType is only accessible via registered custom CSS
+  // properties.
+  InterpolationValue maybeConvertStandardPropertyUnderlyingValue(
+      const ComputedStyle&) const final {
+    NOTREACHED();
+    return nullptr;
+  }
+  void applyStandardPropertyValue(const InterpolableValue&,
+                                  const NonInterpolableValue*,
+                                  StyleResolverState&) const final {
+    NOTREACHED();
+  }
+  InterpolationValue maybeConvertInitial(const StyleResolverState&,
+                                         ConversionCheckers&) const final {
+    NOTREACHED();
+    return nullptr;
+  }
+  InterpolationValue maybeConvertInherit(const StyleResolverState&,
+                                         ConversionCheckers&) const final {
+    NOTREACHED();
+    return nullptr;
+  }
+};
+
+}  // namespace blink
+
+#endif  // CSSAngleInterpolationType_h
diff --git a/third_party/WebKit/Source/core/animation/CSSBorderImageLengthBoxInterpolationType.cpp b/third_party/WebKit/Source/core/animation/CSSBorderImageLengthBoxInterpolationType.cpp
index 9625b29..f9b781a 100644
--- a/third_party/WebKit/Source/core/animation/CSSBorderImageLengthBoxInterpolationType.cpp
+++ b/third_party/WebKit/Source/core/animation/CSSBorderImageLengthBoxInterpolationType.cpp
@@ -4,12 +4,13 @@
 
 #include "core/animation/CSSBorderImageLengthBoxInterpolationType.h"
 
+#include <memory>
 #include "core/animation/BorderImageLengthBoxPropertyFunctions.h"
 #include "core/animation/LengthInterpolationFunctions.h"
+#include "core/css/CSSIdentifierValue.h"
 #include "core/css/CSSQuadValue.h"
 #include "core/css/resolver/StyleResolverState.h"
 #include "wtf/PtrUtil.h"
-#include <memory>
 
 namespace blink {
 
@@ -23,34 +24,58 @@
   SideIndexCount,
 };
 
-struct SideNumbers {
-  explicit SideNumbers(const BorderImageLengthBox& box) {
-    isNumber[SideTop] = box.top().isNumber();
-    isNumber[SideRight] = box.right().isNumber();
-    isNumber[SideBottom] = box.bottom().isNumber();
-    isNumber[SideLeft] = box.left().isNumber();
+enum class SideType {
+  Number,
+  Auto,
+  Length,
+};
+
+SideType getSideType(const BorderImageLength& side) {
+  if (side.isNumber()) {
+    return SideType::Number;
   }
-  explicit SideNumbers(const CSSQuadValue& quad) {
-    isNumber[SideTop] = quad.top()->isPrimitiveValue() &&
-                        toCSSPrimitiveValue(quad.top())->isNumber();
-    isNumber[SideRight] = quad.right()->isPrimitiveValue() &&
-                          toCSSPrimitiveValue(quad.right())->isNumber();
-    isNumber[SideBottom] = quad.bottom()->isPrimitiveValue() &&
-                           toCSSPrimitiveValue(quad.bottom())->isNumber();
-    isNumber[SideLeft] = quad.left()->isPrimitiveValue() &&
-                         toCSSPrimitiveValue(quad.left())->isNumber();
+  if (side.length().isAuto()) {
+    return SideType::Auto;
+  }
+  DCHECK(side.length().isSpecified());
+  return SideType::Length;
+}
+
+SideType getSideType(const CSSValue& side) {
+  if (side.isPrimitiveValue() && toCSSPrimitiveValue(side).isNumber()) {
+    return SideType::Number;
+  }
+  if (side.isIdentifierValue() &&
+      toCSSIdentifierValue(side).getValueID() == CSSValueAuto) {
+    return SideType::Auto;
+  }
+  return SideType::Length;
+}
+
+struct SideTypes {
+  explicit SideTypes(const BorderImageLengthBox& box) {
+    type[SideTop] = getSideType(box.top());
+    type[SideRight] = getSideType(box.right());
+    type[SideBottom] = getSideType(box.bottom());
+    type[SideLeft] = getSideType(box.left());
+  }
+  explicit SideTypes(const CSSQuadValue& quad) {
+    type[SideTop] = getSideType(*quad.top());
+    type[SideRight] = getSideType(*quad.right());
+    type[SideBottom] = getSideType(*quad.bottom());
+    type[SideLeft] = getSideType(*quad.left());
   }
 
-  bool operator==(const SideNumbers& other) const {
+  bool operator==(const SideTypes& other) const {
     for (size_t i = 0; i < SideIndexCount; i++) {
-      if (isNumber[i] != other.isNumber[i])
+      if (type[i] != other.type[i])
         return false;
     }
     return true;
   }
-  bool operator!=(const SideNumbers& other) const { return !(*this == other); }
+  bool operator!=(const SideTypes& other) const { return !(*this == other); }
 
-  bool isNumber[SideIndexCount];
+  SideType type[SideIndexCount];
 };
 
 }  // namespace
@@ -59,13 +84,19 @@
     : public NonInterpolableValue {
  public:
   static PassRefPtr<CSSBorderImageLengthBoxNonInterpolableValue> create(
-      const SideNumbers& sideNumbers,
+      const SideTypes& sideTypes,
       Vector<RefPtr<NonInterpolableValue>>&& sideNonInterpolableValues) {
     return adoptRef(new CSSBorderImageLengthBoxNonInterpolableValue(
-        sideNumbers, std::move(sideNonInterpolableValues)));
+        sideTypes, std::move(sideNonInterpolableValues)));
   }
 
-  const SideNumbers& sideNumbers() const { return m_sideNumbers; }
+  PassRefPtr<CSSBorderImageLengthBoxNonInterpolableValue> clone() {
+    return adoptRef(new CSSBorderImageLengthBoxNonInterpolableValue(
+        m_sideTypes,
+        Vector<RefPtr<NonInterpolableValue>>(m_sideNonInterpolableValues)));
+  }
+
+  const SideTypes& sideTypes() const { return m_sideTypes; }
   const Vector<RefPtr<NonInterpolableValue>>& sideNonInterpolableValues()
       const {
     return m_sideNonInterpolableValues;
@@ -78,14 +109,14 @@
 
  private:
   CSSBorderImageLengthBoxNonInterpolableValue(
-      const SideNumbers& sideNumbers,
+      const SideTypes& sideTypes,
       Vector<RefPtr<NonInterpolableValue>>&& sideNonInterpolableValues)
-      : m_sideNumbers(sideNumbers),
+      : m_sideTypes(sideTypes),
         m_sideNonInterpolableValues(sideNonInterpolableValues) {
     DCHECK_EQ(m_sideNonInterpolableValues.size(), SideIndexCount);
   }
 
-  const SideNumbers m_sideNumbers;
+  const SideTypes m_sideTypes;
   Vector<RefPtr<NonInterpolableValue>> m_sideNonInterpolableValues;
 };
 
@@ -95,59 +126,56 @@
 
 namespace {
 
-class UnderlyingSideNumbersChecker
-    : public InterpolationType::ConversionChecker {
+class UnderlyingSideTypesChecker : public InterpolationType::ConversionChecker {
  public:
-  static std::unique_ptr<UnderlyingSideNumbersChecker> create(
-      const SideNumbers& underlyingSideNumbers) {
-    return WTF::wrapUnique(
-        new UnderlyingSideNumbersChecker(underlyingSideNumbers));
+  static std::unique_ptr<UnderlyingSideTypesChecker> create(
+      const SideTypes& underlyingSideTypes) {
+    return WTF::wrapUnique(new UnderlyingSideTypesChecker(underlyingSideTypes));
   }
 
-  static SideNumbers getUnderlyingSideNumbers(
+  static SideTypes getUnderlyingSideTypes(
       const InterpolationValue& underlying) {
     return toCSSBorderImageLengthBoxNonInterpolableValue(
                *underlying.nonInterpolableValue)
-        .sideNumbers();
+        .sideTypes();
   }
 
  private:
-  UnderlyingSideNumbersChecker(const SideNumbers& underlyingSideNumbers)
-      : m_underlyingSideNumbers(underlyingSideNumbers) {}
+  UnderlyingSideTypesChecker(const SideTypes& underlyingSideTypes)
+      : m_underlyingSideTypes(underlyingSideTypes) {}
 
   bool isValid(const InterpolationEnvironment&,
                const InterpolationValue& underlying) const final {
-    return m_underlyingSideNumbers == getUnderlyingSideNumbers(underlying);
+    return m_underlyingSideTypes == getUnderlyingSideTypes(underlying);
   }
 
-  const SideNumbers m_underlyingSideNumbers;
+  const SideTypes m_underlyingSideTypes;
 };
 
-class InheritedSideNumbersChecker
-    : public InterpolationType::ConversionChecker {
+class InheritedSideTypesChecker : public InterpolationType::ConversionChecker {
  public:
-  static std::unique_ptr<InheritedSideNumbersChecker> create(
+  static std::unique_ptr<InheritedSideTypesChecker> create(
       CSSPropertyID property,
-      const SideNumbers& inheritedSideNumbers) {
+      const SideTypes& inheritedSideTypes) {
     return WTF::wrapUnique(
-        new InheritedSideNumbersChecker(property, inheritedSideNumbers));
+        new InheritedSideTypesChecker(property, inheritedSideTypes));
   }
 
  private:
-  InheritedSideNumbersChecker(CSSPropertyID property,
-                              const SideNumbers& inheritedSideNumbers)
-      : m_property(property), m_inheritedSideNumbers(inheritedSideNumbers) {}
+  InheritedSideTypesChecker(CSSPropertyID property,
+                            const SideTypes& inheritedSideTypes)
+      : m_property(property), m_inheritedSideTypes(inheritedSideTypes) {}
 
   bool isValid(const InterpolationEnvironment& environment,
                const InterpolationValue& underlying) const final {
-    return m_inheritedSideNumbers ==
-           SideNumbers(
+    return m_inheritedSideTypes ==
+           SideTypes(
                BorderImageLengthBoxPropertyFunctions::getBorderImageLengthBox(
                    m_property, *environment.state().parentStyle()));
   }
 
   const CSSPropertyID m_property;
-  const SideNumbers m_inheritedSideNumbers;
+  const SideTypes m_inheritedSideTypes;
 };
 
 InterpolationValue convertBorderImageLengthBox(const BorderImageLengthBox& box,
@@ -165,6 +193,8 @@
     const BorderImageLength& side = *sides[i];
     if (side.isNumber()) {
       list->set(i, InterpolableNumber::create(side.number()));
+    } else if (side.length().isAuto()) {
+      list->set(i, InterpolableList::create(0));
     } else {
       InterpolationValue convertedSide =
           LengthInterpolationFunctions::maybeConvertLength(side.length(), zoom);
@@ -177,7 +207,7 @@
 
   return InterpolationValue(
       std::move(list), CSSBorderImageLengthBoxNonInterpolableValue::create(
-                           SideNumbers(box), std::move(nonInterpolableValues)));
+                           SideTypes(box), std::move(nonInterpolableValues)));
 }
 
 }  // namespace
@@ -186,18 +216,14 @@
 CSSBorderImageLengthBoxInterpolationType::maybeConvertNeutral(
     const InterpolationValue& underlying,
     ConversionCheckers& conversionCheckers) const {
-  SideNumbers underlyingSideNumbers =
-      UnderlyingSideNumbersChecker::getUnderlyingSideNumbers(underlying);
+  SideTypes underlyingSideTypes =
+      UnderlyingSideTypesChecker::getUnderlyingSideTypes(underlying);
   conversionCheckers.push_back(
-      UnderlyingSideNumbersChecker::create(underlyingSideNumbers));
-  const auto& zero = [&underlyingSideNumbers](size_t index) {
-    return underlyingSideNumbers.isNumber[index]
-               ? BorderImageLength(0)
-               : BorderImageLength(Length(0, Fixed));
-  };
-  BorderImageLengthBox zeroBox(zero(SideTop), zero(SideRight), zero(SideBottom),
-                               zero(SideLeft));
-  return convertBorderImageLengthBox(zeroBox, 1);
+      UnderlyingSideTypesChecker::create(underlyingSideTypes));
+  return InterpolationValue(underlying.interpolableValue->cloneAndZero(),
+                            toCSSBorderImageLengthBoxNonInterpolableValue(
+                                *underlying.nonInterpolableValue)
+                                .clone());
 }
 
 InterpolationValue
@@ -217,8 +243,8 @@
   const BorderImageLengthBox& inherited =
       BorderImageLengthBoxPropertyFunctions::getBorderImageLengthBox(
           cssProperty(), *state.parentStyle());
-  conversionCheckers.push_back(InheritedSideNumbersChecker::create(
-      cssProperty(), SideNumbers(inherited)));
+  conversionCheckers.push_back(
+      InheritedSideTypesChecker::create(cssProperty(), SideTypes(inherited)));
   return convertBorderImageLengthBox(inherited,
                                      state.parentStyle()->effectiveZoom());
 }
@@ -245,6 +271,9 @@
     if (side.isPrimitiveValue() && toCSSPrimitiveValue(side).isNumber()) {
       list->set(i, InterpolableNumber::create(
                        toCSSPrimitiveValue(side).getDoubleValue()));
+    } else if (side.isIdentifierValue() &&
+               toCSSIdentifierValue(side).getValueID() == CSSValueAuto) {
+      list->set(i, InterpolableList::create(0));
     } else {
       InterpolationValue convertedSide =
           LengthInterpolationFunctions::maybeConvertCSSValue(side);
@@ -256,9 +285,8 @@
   }
 
   return InterpolationValue(
-      std::move(list),
-      CSSBorderImageLengthBoxNonInterpolableValue::create(
-          SideNumbers(quad), std::move(nonInterpolableValues)));
+      std::move(list), CSSBorderImageLengthBoxNonInterpolableValue::create(
+                           SideTypes(quad), std::move(nonInterpolableValues)));
 }
 
 InterpolationValue CSSBorderImageLengthBoxInterpolationType::
@@ -274,14 +302,13 @@
 CSSBorderImageLengthBoxInterpolationType::maybeMergeSingles(
     InterpolationValue&& start,
     InterpolationValue&& end) const {
-  const SideNumbers& startSideNumbers =
+  const SideTypes& startSideTypes =
       toCSSBorderImageLengthBoxNonInterpolableValue(*start.nonInterpolableValue)
-          .sideNumbers();
-  const SideNumbers& endSideNumbers =
+          .sideTypes();
+  const SideTypes& endSideTypes =
       toCSSBorderImageLengthBoxNonInterpolableValue(*end.nonInterpolableValue)
-          .sideNumbers();
-
-  if (startSideNumbers != endSideNumbers)
+          .sideTypes();
+  if (startSideTypes != endSideTypes)
     return nullptr;
 
   return PairwiseInterpolationValue(std::move(start.interpolableValue),
@@ -294,16 +321,16 @@
     double underlyingFraction,
     const InterpolationValue& value,
     double interpolationFraction) const {
-  const SideNumbers& underlyingSideNumbers =
+  const SideTypes& underlyingSideTypes =
       toCSSBorderImageLengthBoxNonInterpolableValue(
           *underlyingValueOwner.value().nonInterpolableValue)
-          .sideNumbers();
+          .sideTypes();
   const auto& nonInterpolableValue =
       toCSSBorderImageLengthBoxNonInterpolableValue(
           *value.nonInterpolableValue);
-  const SideNumbers& sideNumbers = nonInterpolableValue.sideNumbers();
+  const SideTypes& sideTypes = nonInterpolableValue.sideTypes();
 
-  if (underlyingSideNumbers != sideNumbers) {
+  if (underlyingSideTypes != sideTypes) {
     underlyingValueOwner.set(*this, value);
     return;
   }
@@ -320,13 +347,23 @@
       nonInterpolableValue.sideNonInterpolableValues();
 
   for (size_t i = 0; i < SideIndexCount; i++) {
-    if (sideNumbers.isNumber[i])
-      underlyingList.getMutable(i)->scaleAndAdd(underlyingFraction,
-                                                *list.get(i));
-    else
-      LengthInterpolationFunctions::composite(
-          underlyingList.getMutable(i), underlyingSideNonInterpolableValues[i],
-          underlyingFraction, *list.get(i), sideNonInterpolableValues[i].get());
+    switch (sideTypes.type[i]) {
+      case SideType::Number:
+        underlyingList.getMutable(i)->scaleAndAdd(underlyingFraction,
+                                                  *list.get(i));
+        break;
+      case SideType::Length:
+        LengthInterpolationFunctions::composite(
+            underlyingList.getMutable(i),
+            underlyingSideNonInterpolableValues[i], underlyingFraction,
+            *list.get(i), sideNonInterpolableValues[i].get());
+        break;
+      case SideType::Auto:
+        break;
+      default:
+        NOTREACHED();
+        break;
+    }
   }
 }
 
@@ -334,21 +371,29 @@
     const InterpolableValue& interpolableValue,
     const NonInterpolableValue* nonInterpolableValue,
     StyleResolverState& state) const {
-  const SideNumbers& sideNumbers =
+  const SideTypes& sideTypes =
       toCSSBorderImageLengthBoxNonInterpolableValue(nonInterpolableValue)
-          ->sideNumbers();
+          ->sideTypes();
   const Vector<RefPtr<NonInterpolableValue>>& nonInterpolableValues =
       toCSSBorderImageLengthBoxNonInterpolableValue(nonInterpolableValue)
           ->sideNonInterpolableValues();
   const InterpolableList& list = toInterpolableList(interpolableValue);
-  const auto& convertSide =
-      [&sideNumbers, &list, &state,
-       &nonInterpolableValues](size_t index) -> BorderImageLength {
-    if (sideNumbers.isNumber[index])
-      return clampTo<double>(toInterpolableNumber(list.get(index))->value(), 0);
-    return LengthInterpolationFunctions::createLength(
-        *list.get(index), nonInterpolableValues[index].get(),
-        state.cssToLengthConversionData(), ValueRangeNonNegative);
+  const auto& convertSide = [&sideTypes, &list, &state, &nonInterpolableValues](
+      size_t index) -> BorderImageLength {
+    switch (sideTypes.type[index]) {
+      case SideType::Number:
+        return clampTo<double>(toInterpolableNumber(list.get(index))->value(),
+                               0);
+      case SideType::Auto:
+        return Length(Auto);
+      case SideType::Length:
+        return LengthInterpolationFunctions::createLength(
+            *list.get(index), nonInterpolableValues[index].get(),
+            state.cssToLengthConversionData(), ValueRangeNonNegative);
+      default:
+        NOTREACHED();
+        return Length(Auto);
+    }
   };
   BorderImageLengthBox box(convertSide(SideTop), convertSide(SideRight),
                            convertSide(SideBottom), convertSide(SideLeft));
diff --git a/third_party/WebKit/Source/core/animation/CSSInterpolationTypesMap.cpp b/third_party/WebKit/Source/core/animation/CSSInterpolationTypesMap.cpp
index b8bc222a..7fee7a65 100644
--- a/third_party/WebKit/Source/core/animation/CSSInterpolationTypesMap.cpp
+++ b/third_party/WebKit/Source/core/animation/CSSInterpolationTypesMap.cpp
@@ -5,6 +5,7 @@
 #include "core/animation/CSSInterpolationTypesMap.h"
 
 #include <memory>
+#include "core/animation/CSSAngleInterpolationType.h"
 #include "core/animation/CSSBasicShapeInterpolationType.h"
 #include "core/animation/CSSBorderImageLengthBoxInterpolationType.h"
 #include "core/animation/CSSClipInterpolationType.h"
@@ -29,6 +30,7 @@
 #include "core/animation/CSSShadowListInterpolationType.h"
 #include "core/animation/CSSSizeListInterpolationType.h"
 #include "core/animation/CSSTextIndentInterpolationType.h"
+#include "core/animation/CSSTimeInterpolationType.h"
 #include "core/animation/CSSTransformInterpolationType.h"
 #include "core/animation/CSSTransformOriginInterpolationType.h"
 #include "core/animation/CSSTranslateInterpolationType.h"
@@ -340,20 +342,26 @@
     }
 
     switch (component.m_type) {
+      case CSSSyntaxType::Angle:
+        result.push_back(WTF::makeUnique<CSSAngleInterpolationType>(property));
+        break;
       case CSSSyntaxType::Color:
         result.push_back(WTF::makeUnique<CSSColorInterpolationType>(property));
         break;
       case CSSSyntaxType::Length:
+      case CSSSyntaxType::LengthPercentage:
+      case CSSSyntaxType::Percentage:
         result.push_back(WTF::makeUnique<CSSLengthInterpolationType>(property));
         break;
       case CSSSyntaxType::Number:
-      case CSSSyntaxType::Percentage:
-      case CSSSyntaxType::LengthPercentage:
+        result.push_back(WTF::makeUnique<CSSNumberInterpolationType>(property));
+        break;
+      case CSSSyntaxType::Time:
+        result.push_back(WTF::makeUnique<CSSTimeInterpolationType>(property));
+        break;
       case CSSSyntaxType::Image:
       case CSSSyntaxType::Url:
       case CSSSyntaxType::Integer:
-      case CSSSyntaxType::Angle:
-      case CSSSyntaxType::Time:
       case CSSSyntaxType::Resolution:
       case CSSSyntaxType::TransformFunction:
         // TODO(alancutter): Support smooth interpolation of these types.
diff --git a/third_party/WebKit/Source/core/animation/CSSNumberInterpolationType.cpp b/third_party/WebKit/Source/core/animation/CSSNumberInterpolationType.cpp
index 03954520..3f9dca28 100644
--- a/third_party/WebKit/Source/core/animation/CSSNumberInterpolationType.cpp
+++ b/third_party/WebKit/Source/core/animation/CSSNumberInterpolationType.cpp
@@ -36,6 +36,14 @@
   const double m_number;
 };
 
+const CSSValue* CSSNumberInterpolationType::createCSSValue(
+    const InterpolableValue& value,
+    const NonInterpolableValue*,
+    const StyleResolverState&) const {
+  return CSSPrimitiveValue::create(toInterpolableNumber(value).value(),
+                                   CSSPrimitiveValue::UnitType::Number);
+}
+
 InterpolationValue CSSNumberInterpolationType::createNumberValue(
     double number) const {
   return InterpolationValue(InterpolableNumber::create(number));
diff --git a/third_party/WebKit/Source/core/animation/CSSNumberInterpolationType.h b/third_party/WebKit/Source/core/animation/CSSNumberInterpolationType.h
index 1fc7333..5c0d310 100644
--- a/third_party/WebKit/Source/core/animation/CSSNumberInterpolationType.h
+++ b/third_party/WebKit/Source/core/animation/CSSNumberInterpolationType.h
@@ -20,6 +20,10 @@
                                   const NonInterpolableValue*,
                                   StyleResolverState&) const final;
 
+  const CSSValue* createCSSValue(const InterpolableValue&,
+                                 const NonInterpolableValue*,
+                                 const StyleResolverState&) const final;
+
  private:
   InterpolationValue createNumberValue(double number) const;
   InterpolationValue maybeConvertNeutral(const InterpolationValue& underlying,
diff --git a/third_party/WebKit/Source/core/animation/CSSTimeInterpolationType.cpp b/third_party/WebKit/Source/core/animation/CSSTimeInterpolationType.cpp
new file mode 100644
index 0000000..05c59e6
--- /dev/null
+++ b/third_party/WebKit/Source/core/animation/CSSTimeInterpolationType.cpp
@@ -0,0 +1,35 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "core/animation/CSSTimeInterpolationType.h"
+
+#include "core/css/CSSPrimitiveValue.h"
+
+namespace blink {
+
+InterpolationValue CSSTimeInterpolationType::maybeConvertNeutral(
+    const InterpolationValue&,
+    ConversionCheckers&) const {
+  return InterpolationValue(InterpolableNumber::create(0));
+}
+
+InterpolationValue CSSTimeInterpolationType::maybeConvertValue(
+    const CSSValue& value,
+    const StyleResolverState*,
+    ConversionCheckers&) const {
+  if (!value.isPrimitiveValue() || !toCSSPrimitiveValue(value).isTime())
+    return nullptr;
+  return InterpolationValue(
+      InterpolableNumber::create(toCSSPrimitiveValue(value).computeSeconds()));
+}
+
+const CSSValue* CSSTimeInterpolationType::createCSSValue(
+    const InterpolableValue& value,
+    const NonInterpolableValue*,
+    const StyleResolverState&) const {
+  return CSSPrimitiveValue::create(toInterpolableNumber(value).value(),
+                                   CSSPrimitiveValue::UnitType::Seconds);
+}
+
+}  // namespace blink
diff --git a/third_party/WebKit/Source/core/animation/CSSTimeInterpolationType.h b/third_party/WebKit/Source/core/animation/CSSTimeInterpolationType.h
new file mode 100644
index 0000000..4f868e7
--- /dev/null
+++ b/third_party/WebKit/Source/core/animation/CSSTimeInterpolationType.h
@@ -0,0 +1,58 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CSSTimeInterpolationType_h
+#define CSSTimeInterpolationType_h
+
+#include "core/animation/CSSInterpolationType.h"
+
+namespace blink {
+
+class CSSTimeInterpolationType : public CSSInterpolationType {
+ public:
+  CSSTimeInterpolationType(PropertyHandle property)
+      : CSSInterpolationType(property) {
+    DCHECK(property.isCSSCustomProperty());
+  }
+
+  InterpolationValue maybeConvertNeutral(const InterpolationValue& underlying,
+                                         ConversionCheckers&) const final;
+  InterpolationValue maybeConvertValue(const CSSValue&,
+                                       const StyleResolverState*,
+                                       ConversionCheckers&) const final;
+
+  const CSSValue* createCSSValue(const InterpolableValue&,
+                                 const NonInterpolableValue*,
+                                 const StyleResolverState&) const final;
+
+ private:
+  // These methods only apply to CSSInterpolationTypes used by standard CSS
+  // properties.
+  // CSSTimeInterpolationType is only accessible via registered custom CSS
+  // properties.
+  InterpolationValue maybeConvertStandardPropertyUnderlyingValue(
+      const ComputedStyle&) const final {
+    NOTREACHED();
+    return nullptr;
+  }
+  void applyStandardPropertyValue(const InterpolableValue&,
+                                  const NonInterpolableValue*,
+                                  StyleResolverState&) const final {
+    NOTREACHED();
+  }
+  InterpolationValue maybeConvertInitial(const StyleResolverState&,
+                                         ConversionCheckers&) const final {
+    NOTREACHED();
+    return nullptr;
+  }
+  InterpolationValue maybeConvertInherit(const StyleResolverState&,
+                                         ConversionCheckers&) const final {
+    NOTREACHED();
+    return nullptr;
+  }
+};
+
+}  // namespace blink
+
+#endif  // CSSTimeInterpolationType_h
diff --git a/third_party/WebKit/Source/core/animation/CSSTransformInterpolationType.cpp b/third_party/WebKit/Source/core/animation/CSSTransformInterpolationType.cpp
index 12ec3a5..33019b66 100644
--- a/third_party/WebKit/Source/core/animation/CSSTransformInterpolationType.cpp
+++ b/third_party/WebKit/Source/core/animation/CSSTransformInterpolationType.cpp
@@ -27,10 +27,13 @@
 
   static PassRefPtr<CSSTransformNonInterpolableValue> create(
       CSSTransformNonInterpolableValue&& start,
-      CSSTransformNonInterpolableValue&& end) {
+      double startFraction,
+      CSSTransformNonInterpolableValue&& end,
+      double endFraction) {
     return adoptRef(new CSSTransformNonInterpolableValue(
-        false, std::move(start.transform()), std::move(end.transform()),
-        start.isAdditive(), end.isAdditive()));
+        false, start.getInterpolatedTransform(startFraction),
+        end.getInterpolatedTransform(endFraction), start.isAdditive(),
+        end.isAdditive()));
   }
 
   PassRefPtr<CSSTransformNonInterpolableValue> composite(
@@ -59,15 +62,15 @@
   void setSingleAdditive() {
     DCHECK(m_isSingle);
     m_isStartAdditive = true;
+    m_isEndAdditive = true;
   }
 
   TransformOperations getInterpolatedTransform(double progress) const {
-    DCHECK(!m_isStartAdditive && !m_isEndAdditive);
-    DCHECK(!m_isSingle || progress == 0);
     if (progress == 0)
       return m_start;
     if (progress == 1)
       return m_end;
+    DCHECK(!isAdditive());
     return m_end.blend(m_start, progress);
   }
 
@@ -89,13 +92,10 @@
     DCHECK(m_isSingle);
     return m_start;
   }
-  TransformOperations& transform() {
-    DCHECK(m_isSingle);
-    return m_start;
-  }
   bool isAdditive() const {
-    DCHECK(m_isSingle);
-    return m_isStartAdditive;
+    bool result = m_isStartAdditive || m_isEndAdditive;
+    DCHECK(!result || m_isSingle);
+    return result;
   }
 
   Vector<RefPtr<TransformOperation>> concat(const TransformOperations& a,
@@ -217,13 +217,16 @@
 PairwiseInterpolationValue CSSTransformInterpolationType::maybeMergeSingles(
     InterpolationValue&& start,
     InterpolationValue&& end) const {
+  double startFraction = toInterpolableNumber(*start.interpolableValue).value();
+  double endFraction = toInterpolableNumber(*end.interpolableValue).value();
   return PairwiseInterpolationValue(
       InterpolableNumber::create(0), InterpolableNumber::create(1),
       CSSTransformNonInterpolableValue::create(
           std::move(
               toCSSTransformNonInterpolableValue(*start.nonInterpolableValue)),
-          std::move(
-              toCSSTransformNonInterpolableValue(*end.nonInterpolableValue))));
+          startFraction, std::move(toCSSTransformNonInterpolableValue(
+                             *end.nonInterpolableValue)),
+          endFraction));
 }
 
 InterpolationValue
diff --git a/third_party/WebKit/Source/core/animation/CSSVisibilityInterpolationType.cpp b/third_party/WebKit/Source/core/animation/CSSVisibilityInterpolationType.cpp
index fa1abf6..008414c7 100644
--- a/third_party/WebKit/Source/core/animation/CSSVisibilityInterpolationType.cpp
+++ b/third_party/WebKit/Source/core/animation/CSSVisibilityInterpolationType.cpp
@@ -30,9 +30,8 @@
       return m_start;
     if (fraction >= 1)
       return m_end;
-    if (m_start == EVisibility::kVisible || m_end == EVisibility::kVisible)
-      return EVisibility::kVisible;
-    return fraction < 0.5 ? m_start : m_end;
+    DCHECK(m_start == EVisibility::kVisible || m_end == EVisibility::kVisible);
+    return EVisibility::kVisible;
   }
 
   DECLARE_NON_INTERPOLABLE_VALUE_TYPE();
@@ -161,13 +160,23 @@
 PairwiseInterpolationValue CSSVisibilityInterpolationType::maybeMergeSingles(
     InterpolationValue&& start,
     InterpolationValue&& end) const {
-  return PairwiseInterpolationValue(
-      InterpolableNumber::create(0), InterpolableNumber::create(1),
-      CSSVisibilityNonInterpolableValue::create(
-          toCSSVisibilityNonInterpolableValue(*start.nonInterpolableValue)
-              .visibility(),
-          toCSSVisibilityNonInterpolableValue(*end.nonInterpolableValue)
-              .visibility()));
+  EVisibility startVisibility =
+      toCSSVisibilityNonInterpolableValue(*start.nonInterpolableValue)
+          .visibility();
+  EVisibility endVisibility =
+      toCSSVisibilityNonInterpolableValue(*end.nonInterpolableValue)
+          .visibility();
+  // One side must be "visible".
+  // Spec: https://drafts.csswg.org/css-transitions/#animtype-visibility
+  if (startVisibility != endVisibility &&
+      startVisibility != EVisibility::kVisible &&
+      endVisibility != EVisibility::kVisible) {
+    return nullptr;
+  }
+  return PairwiseInterpolationValue(InterpolableNumber::create(0),
+                                    InterpolableNumber::create(1),
+                                    CSSVisibilityNonInterpolableValue::create(
+                                        startVisibility, endVisibility));
 }
 
 void CSSVisibilityInterpolationType::composite(
diff --git a/third_party/WebKit/Source/core/animation/Keyframe.h b/third_party/WebKit/Source/core/animation/Keyframe.h
index 9a70eb90f..323096f0 100644
--- a/third_party/WebKit/Source/core/animation/Keyframe.h
+++ b/third_party/WebKit/Source/core/animation/Keyframe.h
@@ -59,6 +59,7 @@
 
   virtual bool isAnimatableValueKeyframe() const { return false; }
   virtual bool isStringKeyframe() const { return false; }
+  virtual bool isTransitionKeyframe() const { return false; }
 
   // Represents a property-value pair in a keyframe.
   class PropertySpecificKeyframe : public RefCounted<PropertySpecificKeyframe> {
@@ -93,6 +94,7 @@
     }
     virtual bool isCSSPropertySpecificKeyframe() const { return false; }
     virtual bool isSVGPropertySpecificKeyframe() const { return false; }
+    virtual bool isTransitionPropertySpecificKeyframe() const { return false; }
 
     virtual PassRefPtr<PropertySpecificKeyframe> neutralKeyframe(
         double offset,
diff --git a/third_party/WebKit/Source/core/animation/KeyframeEffectModel.h b/third_party/WebKit/Source/core/animation/KeyframeEffectModel.h
index a92b608..57329c68 100644
--- a/third_party/WebKit/Source/core/animation/KeyframeEffectModel.h
+++ b/third_party/WebKit/Source/core/animation/KeyframeEffectModel.h
@@ -31,12 +31,14 @@
 #ifndef KeyframeEffectModel_h
 #define KeyframeEffectModel_h
 
+#include <memory>
 #include "core/CoreExport.h"
 #include "core/animation/AnimationEffectReadOnly.h"
 #include "core/animation/EffectModel.h"
 #include "core/animation/InterpolationEffect.h"
 #include "core/animation/PropertyHandle.h"
 #include "core/animation/StringKeyframe.h"
+#include "core/animation/TransitionKeyframe.h"
 #include "core/animation/animatable/AnimatableValueKeyframe.h"
 #include "platform/animation/TimingFunction.h"
 #include "platform/heap/Handle.h"
@@ -44,7 +46,6 @@
 #include "wtf/HashSet.h"
 #include "wtf/PassRefPtr.h"
 #include "wtf/Vector.h"
-#include <memory>
 
 namespace blink {
 
@@ -105,6 +106,7 @@
 
   virtual bool isAnimatableValueKeyframeEffectModel() const { return false; }
   virtual bool isStringKeyframeEffectModel() const { return false; }
+  virtual bool isTransitionKeyframeEffectModel() const { return false; }
 
   bool hasSyntheticKeyframes() const {
     ensureKeyframeGroups();
@@ -187,6 +189,7 @@
 
   virtual bool isAnimatableValueKeyframeEffectModel() const { return false; }
   virtual bool isStringKeyframeEffectModel() const { return false; }
+  virtual bool isTransitionKeyframeEffectModel() const { return false; }
 };
 
 using KeyframeVector = KeyframeEffectModelBase::KeyframeVector;
@@ -205,6 +208,11 @@
 using StringPropertySpecificKeyframeVector =
     StringKeyframeEffectModel::PropertySpecificKeyframeVector;
 
+using TransitionKeyframeEffectModel = KeyframeEffectModel<TransitionKeyframe>;
+using TransitionKeyframeVector = TransitionKeyframeEffectModel::KeyframeVector;
+using TransitionPropertySpecificKeyframeVector =
+    TransitionKeyframeEffectModel::PropertySpecificKeyframeVector;
+
 DEFINE_TYPE_CASTS(KeyframeEffectModelBase,
                   EffectModel,
                   value,
@@ -220,6 +228,11 @@
                   value,
                   value->isStringKeyframeEffectModel(),
                   value.isStringKeyframeEffectModel());
+DEFINE_TYPE_CASTS(TransitionKeyframeEffectModel,
+                  KeyframeEffectModelBase,
+                  value,
+                  value->isTransitionKeyframeEffectModel(),
+                  value.isTransitionKeyframeEffectModel());
 
 inline const AnimatableValueKeyframeEffectModel*
 toAnimatableValueKeyframeEffectModel(const EffectModel* base) {
@@ -241,6 +254,11 @@
   return toStringKeyframeEffectModel(toKeyframeEffectModelBase(base));
 }
 
+inline TransitionKeyframeEffectModel* toTransitionKeyframeEffectModel(
+    EffectModel* base) {
+  return toTransitionKeyframeEffectModel(toKeyframeEffectModelBase(base));
+}
+
 template <>
 inline bool KeyframeEffectModel<
     AnimatableValueKeyframe>::isAnimatableValueKeyframeEffectModel() const {
@@ -253,6 +271,12 @@
   return true;
 }
 
+template <>
+inline bool KeyframeEffectModel<
+    TransitionKeyframe>::isTransitionKeyframeEffectModel() const {
+  return true;
+}
+
 }  // namespace blink
 
 #endif  // KeyframeEffectModel_h
diff --git a/third_party/WebKit/Source/core/animation/LengthInterpolationFunctions.cpp b/third_party/WebKit/Source/core/animation/LengthInterpolationFunctions.cpp
index 1553826b..2dbbb20 100644
--- a/third_party/WebKit/Source/core/animation/LengthInterpolationFunctions.cpp
+++ b/third_party/WebKit/Source/core/animation/LengthInterpolationFunctions.cpp
@@ -213,8 +213,8 @@
 
   for (size_t i = 0; i < CSSPrimitiveValue::LengthUnitTypeCount; i++) {
     double value = toInterpolableNumber(*interpolableList.get(i)).value();
-    if (value == 0 ||
-        (i == CSSPrimitiveValue::UnitTypePercentage && !hasPercentage)) {
+    if (value == 0 &&
+        (i != CSSPrimitiveValue::UnitTypePercentage || !hasPercentage)) {
       continue;
     }
     CSSPrimitiveValue* currentValue =
diff --git a/third_party/WebKit/Source/core/animation/TransitionKeyframe.cpp b/third_party/WebKit/Source/core/animation/TransitionKeyframe.cpp
new file mode 100644
index 0000000..ec72a497
--- /dev/null
+++ b/third_party/WebKit/Source/core/animation/TransitionKeyframe.cpp
@@ -0,0 +1,49 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "core/animation/TransitionKeyframe.h"
+
+#include "core/animation/CompositorAnimations.h"
+#include "core/animation/InterpolationType.h"
+#include "core/animation/PairwiseInterpolationValue.h"
+#include "core/animation/TransitionInterpolation.h"
+
+namespace blink {
+
+void TransitionKeyframe::setCompositorValue(
+    RefPtr<AnimatableValue> compositorValue) {
+  DCHECK_EQ(
+      CompositorAnimations::isCompositableProperty(m_property.cssProperty()),
+      static_cast<bool>(compositorValue.get()));
+  m_compositorValue = std::move(compositorValue);
+}
+
+PropertyHandleSet TransitionKeyframe::properties() const {
+  PropertyHandleSet result;
+  result.insert(m_property);
+  return result;
+}
+
+PassRefPtr<Keyframe::PropertySpecificKeyframe>
+TransitionKeyframe::createPropertySpecificKeyframe(
+    const PropertyHandle& property) const {
+  DCHECK(property == m_property);
+  return PropertySpecificKeyframe::create(offset(), &easing(), composite(),
+                                          m_value->clone(), m_compositorValue);
+}
+
+PassRefPtr<Interpolation>
+TransitionKeyframe::PropertySpecificKeyframe::createInterpolation(
+    const PropertyHandle& property,
+    const Keyframe::PropertySpecificKeyframe& otherSuperClass) const {
+  const PropertySpecificKeyframe& other =
+      toTransitionPropertySpecificKeyframe(otherSuperClass);
+  DCHECK(m_value->type() == other.m_value->type());
+  return TransitionInterpolation::create(
+      property, m_value->type(), m_value->value().clone(),
+      other.m_value->value().clone(), m_compositorValue,
+      other.m_compositorValue);
+}
+
+}  // namespace blink
diff --git a/third_party/WebKit/Source/core/animation/TransitionKeyframe.h b/third_party/WebKit/Source/core/animation/TransitionKeyframe.h
new file mode 100644
index 0000000..838f3e8
--- /dev/null
+++ b/third_party/WebKit/Source/core/animation/TransitionKeyframe.h
@@ -0,0 +1,117 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef TransitionKeyframe_h
+#define TransitionKeyframe_h
+
+#include "core/CoreExport.h"
+#include "core/animation/Keyframe.h"
+#include "core/animation/TypedInterpolationValue.h"
+#include "core/animation/animatable/AnimatableValue.h"
+
+namespace blink {
+
+class CORE_EXPORT TransitionKeyframe : public Keyframe {
+ public:
+  static PassRefPtr<TransitionKeyframe> create(const PropertyHandle& property) {
+    return adoptRef(new TransitionKeyframe(property));
+  }
+  void setValue(std::unique_ptr<TypedInterpolationValue> value) {
+    m_value = std::move(value);
+  }
+  void setCompositorValue(RefPtr<AnimatableValue>);
+  PropertyHandleSet properties() const final;
+
+  class PropertySpecificKeyframe : public Keyframe::PropertySpecificKeyframe {
+   public:
+    static PassRefPtr<PropertySpecificKeyframe> create(
+        double offset,
+        PassRefPtr<TimingFunction> easing,
+        EffectModel::CompositeOperation composite,
+        std::unique_ptr<TypedInterpolationValue> value,
+        RefPtr<AnimatableValue> compositorValue) {
+      return adoptRef(new PropertySpecificKeyframe(offset, std::move(easing),
+                                                   composite, std::move(value),
+                                                   std::move(compositorValue)));
+    }
+
+    PassRefPtr<AnimatableValue> getAnimatableValue() const final {
+      return m_compositorValue;
+    }
+
+    bool isNeutral() const final { return false; }
+    PassRefPtr<Keyframe::PropertySpecificKeyframe> neutralKeyframe(
+        double offset,
+        PassRefPtr<TimingFunction> easing) const final {
+      NOTREACHED();
+      return nullptr;
+    }
+    PassRefPtr<Interpolation> createInterpolation(
+        const PropertyHandle&,
+        const Keyframe::PropertySpecificKeyframe& other) const final;
+
+    bool isTransitionPropertySpecificKeyframe() const final { return true; }
+
+   private:
+    PropertySpecificKeyframe(double offset,
+                             PassRefPtr<TimingFunction> easing,
+                             EffectModel::CompositeOperation composite,
+                             std::unique_ptr<TypedInterpolationValue> value,
+                             RefPtr<AnimatableValue> compositorValue)
+        : Keyframe::PropertySpecificKeyframe(offset,
+                                             std::move(easing),
+                                             composite),
+          m_value(std::move(value)),
+          m_compositorValue(std::move(compositorValue)) {}
+
+    PassRefPtr<Keyframe::PropertySpecificKeyframe> cloneWithOffset(
+        double offset) const final {
+      return create(offset, m_easing, m_composite, m_value->clone(),
+                    m_compositorValue);
+    }
+
+    std::unique_ptr<TypedInterpolationValue> m_value;
+    RefPtr<AnimatableValue> m_compositorValue;
+  };
+
+ private:
+  TransitionKeyframe(const PropertyHandle& property) : m_property(property) {}
+
+  TransitionKeyframe(const TransitionKeyframe& copyFrom)
+      : Keyframe(copyFrom.m_offset, copyFrom.m_composite, copyFrom.m_easing),
+        m_property(copyFrom.m_property),
+        m_value(copyFrom.m_value->clone()),
+        m_compositorValue(copyFrom.m_compositorValue) {}
+
+  bool isTransitionKeyframe() const final { return true; }
+
+  PassRefPtr<Keyframe> clone() const final {
+    return adoptRef(new TransitionKeyframe(*this));
+  }
+
+  PassRefPtr<Keyframe::PropertySpecificKeyframe> createPropertySpecificKeyframe(
+      const PropertyHandle&) const final;
+
+  PropertyHandle m_property;
+  std::unique_ptr<TypedInterpolationValue> m_value;
+  RefPtr<AnimatableValue> m_compositorValue;
+};
+
+using TransitionPropertySpecificKeyframe =
+    TransitionKeyframe::PropertySpecificKeyframe;
+
+DEFINE_TYPE_CASTS(TransitionKeyframe,
+                  Keyframe,
+                  value,
+                  value->isTransitionKeyframe(),
+                  value.isTransitionKeyframe());
+DEFINE_TYPE_CASTS(TransitionPropertySpecificKeyframe,
+                  Keyframe::PropertySpecificKeyframe,
+                  value,
+                  value->isTransitionPropertySpecificKeyframe(),
+                  value.isTransitionPropertySpecificKeyframe());
+
+}  // namespace blink
+
+#endif
diff --git a/third_party/WebKit/Source/core/animation/animatable/AnimatableValueKeyframe.h b/third_party/WebKit/Source/core/animation/animatable/AnimatableValueKeyframe.h
index 118d92d..5ffd1146 100644
--- a/third_party/WebKit/Source/core/animation/animatable/AnimatableValueKeyframe.h
+++ b/third_party/WebKit/Source/core/animation/animatable/AnimatableValueKeyframe.h
@@ -12,6 +12,8 @@
 
 namespace blink {
 
+// TODO(alancutter): Delete this class once TransitionKeyframe has completely
+// replaced it.
 class CORE_EXPORT AnimatableValueKeyframe : public Keyframe {
  public:
   static PassRefPtr<AnimatableValueKeyframe> create() {
diff --git a/third_party/WebKit/Source/core/css/BUILD.gn b/third_party/WebKit/Source/core/css/BUILD.gn
index a511f393..6b2783ac 100644
--- a/third_party/WebKit/Source/core/css/BUILD.gn
+++ b/third_party/WebKit/Source/core/css/BUILD.gn
@@ -345,7 +345,6 @@
     "parser/MediaQueryParser.cpp",
     "parser/SizesAttributeParser.cpp",
     "parser/SizesCalcParser.cpp",
-    "properties/CSSPropertyAPI.h",
     "properties/CSSPropertyAPIAlignItems.cpp",
     "properties/CSSPropertyAPIAlignOrJustifyContent.cpp",
     "properties/CSSPropertyAPIAlignOrJustifySelf.cpp",
diff --git a/third_party/WebKit/Source/core/css/properties/CSSPropertyAPI.h b/third_party/WebKit/Source/core/css/properties/CSSPropertyAPI.h
deleted file mode 100644
index 0280eb94..0000000
--- a/third_party/WebKit/Source/core/css/properties/CSSPropertyAPI.h
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright 2016 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CSSPropertyAPI_h
-#define CSSPropertyAPI_h
-
-#include "core/CSSPropertyNames.h"
-#include "wtf/Allocator.h"
-
-namespace blink {
-
-class CSSValue;
-class CSSParserContext;
-class CSSParserTokenRange;
-
-// We will use this API to represent all functions used for property-specific
-// logic inside the blink style engine. All specific properties are subclasses
-// of CSSPropertyAPI.
-//
-// To add a new implementation of this API for a property:
-// - Make a class that implements CSSPropertyAPI.
-// - For each method that you wish to implement in this class, add this method
-//   name to the api_methods flag in CSSProperties.json5.
-// - Implement these methods in the .cpp file.
-//
-// To add new functions to this API:
-// - Add the function to the struct below.
-// - Add the function name to the valid_values field for api_methods in
-//   CSSProperties.json5.
-class CSSPropertyAPI {
-  STATIC_ONLY(CSSPropertyAPI);
-
- public:
-  // Parses a single CSS property and returns the corresponding CSSValue. If the
-  // input is invalid it returns nullptr.
-  static const CSSValue* parseSingleValue(CSSParserTokenRange&,
-                                          const CSSParserContext*) {
-    // No code should reach here, since properties either have their own
-    // implementations of this method or store nullptr in their descriptor.
-    NOTREACHED();
-    return nullptr;
-  }
-
-  static bool parseShorthand(bool,
-                             CSSParserTokenRange&,
-                             const CSSParserContext*) {
-    // No code should reach here, since properties either have their own
-    // implementations of this method or store nullptr in their descriptor.
-    NOTREACHED();
-    return false;
-  }
-};
-
-}  // namespace blink
-
-#endif  // CSSPropertyAPI_h
diff --git a/third_party/WebKit/Source/core/css/properties/CSSPropertyAPIMethods.json5 b/third_party/WebKit/Source/core/css/properties/CSSPropertyAPIMethods.json5
index d30344c..ea48fa9 100644
--- a/third_party/WebKit/Source/core/css/properties/CSSPropertyAPIMethods.json5
+++ b/third_party/WebKit/Source/core/css/properties/CSSPropertyAPIMethods.json5
@@ -22,18 +22,28 @@
 		parameters: {
 			default: "",
 			valid_type: "str",
-		}
+		},
+
+		// - description
+		// A string comment describing the API method. This comment will be
+		// placed in the code above the method definition in CSSPropertyAPI.h.
+		description: {
+			default: "",
+			valid_type: "str",
+		},
 	},
 	data: [
 		{
 		  name: "parseSingleValue",
 		  return_type: "const CSSValue*",
-		  parameters: "(CSSParserTokenRange&, const CSSParserContext*)"
+		  parameters: "(CSSParserTokenRange&, const CSSParserContext*)",
+		  description: "Parses a single CSS property and returns the corresponding CSSValue. If the input is invalid it returns nullptr.",
 		},
 		{
 		  name: "parseShorthand",
 		  return_type: "bool",
-		  parameters: "(bool, CSSParserTokenRange&, const CSSParserContext*)"
+		  parameters: "(bool, CSSParserTokenRange&, const CSSParserContext*)",
+		  description: "Returns true if the property can be parsed as a shorthand.",
 		},
 	]
 }
diff --git a/third_party/WebKit/Source/core/editing/BUILD.gn b/third_party/WebKit/Source/core/editing/BUILD.gn
index 0449e43..01bb06b5 100644
--- a/third_party/WebKit/Source/core/editing/BUILD.gn
+++ b/third_party/WebKit/Source/core/editing/BUILD.gn
@@ -195,8 +195,12 @@
     "spellcheck/TextCheckingParagraph.h",
     "state_machines/BackspaceStateMachine.cpp",
     "state_machines/BackspaceStateMachine.h",
+    "state_machines/BackwardCodePointStateMachine.cpp",
+    "state_machines/BackwardCodePointStateMachine.h",
     "state_machines/BackwardGraphemeBoundaryStateMachine.cpp",
     "state_machines/BackwardGraphemeBoundaryStateMachine.h",
+    "state_machines/ForwardCodePointStateMachine.cpp",
+    "state_machines/ForwardCodePointStateMachine.h",
     "state_machines/ForwardGraphemeBoundaryStateMachine.cpp",
     "state_machines/ForwardGraphemeBoundaryStateMachine.h",
     "state_machines/StateMachineUtil.cpp",
@@ -257,7 +261,9 @@
     "serializers/StyledMarkupSerializerTest.cpp",
     "spellcheck/SpellCheckerTest.cpp",
     "state_machines/BackspaceStateMachineTest.cpp",
+    "state_machines/BackwardCodePointStateMachineTest.cpp",
     "state_machines/BackwardGraphemeBoundaryStateMachineTest.cpp",
+    "state_machines/ForwardCodePointStateMachineTest.cpp",
     "state_machines/ForwardGraphemeBoundaryStateMachineTest.cpp",
     "state_machines/StateMachineTestUtil.cpp",
     "state_machines/StateMachineUtilTest.cpp",
diff --git a/third_party/WebKit/Source/core/editing/DOMSelection.cpp b/third_party/WebKit/Source/core/editing/DOMSelection.cpp
index bb6e173..ae43837 100644
--- a/third_party/WebKit/Source/core/editing/DOMSelection.cpp
+++ b/third_party/WebKit/Source/core/editing/DOMSelection.cpp
@@ -459,6 +459,17 @@
   // 3. Let oldAnchor and oldFocus be the context object's anchor and focus, and
   // let newFocus be the boundary point (node, offset).
   const Position& oldAnchor = anchorPosition();
+  // TODO(tkent): Diagnostic checks for crbug.com/693578.  They should be
+  // removed before M58 branch.
+  if (oldAnchor.isNull()) {
+    if (Range* range = documentCachedRange()) {
+      LOG(FATAL)
+          << "Selection has a cached Range, but anchorPosition is null. start="
+          << range->startContainer() << " end=" << range->endContainer();
+    } else if (frame() && !frame()->selection().isNone()) {
+      LOG(FATAL) << "FrameSelection is not none, but anchorPosition is null.";
+    }
+  }
   DCHECK(!oldAnchor.isNull());
   const Position newFocus(node, offset);
 
diff --git a/third_party/WebKit/Source/core/editing/FrameSelection.cpp b/third_party/WebKit/Source/core/editing/FrameSelection.cpp
index ffb32c4..89a0135c 100644
--- a/third_party/WebKit/Source/core/editing/FrameSelection.cpp
+++ b/third_party/WebKit/Source/core/editing/FrameSelection.cpp
@@ -343,12 +343,6 @@
       options, align, granularity);
 }
 
-void FrameSelection::setSelection(
-    const VisibleSelectionInFlatTree& newSelection,
-    SetSelectionOptions options) {
-  setSelection(newSelection.asSelection(), options);
-}
-
 // TODO(yosin): We should move |computePositionForChildrenRemoval()| to
 // "SelectionEditor.cpp" since it used only in
 // |SelectionEditor::nodeChildrenWillBeRemoved()|.
diff --git a/third_party/WebKit/Source/core/editing/FrameSelection.h b/third_party/WebKit/Source/core/editing/FrameSelection.h
index 44328838..ad429ce 100644
--- a/third_party/WebKit/Source/core/editing/FrameSelection.h
+++ b/third_party/WebKit/Source/core/editing/FrameSelection.h
@@ -150,7 +150,6 @@
                     SetSelectionOptions = CloseTyping | ClearTypingStyle,
                     CursorAlignOnScroll = CursorAlignOnScroll::IfNeeded,
                     TextGranularity = CharacterGranularity);
-  void setSelection(const VisibleSelectionInFlatTree&, SetSelectionOptions);
   bool setSelectedRange(
       const EphemeralRange&,
       TextAffinity,
diff --git a/third_party/WebKit/Source/core/editing/SelectionEditor.cpp b/third_party/WebKit/Source/core/editing/SelectionEditor.cpp
index e34bba5..3cbe4ec 100644
--- a/third_party/WebKit/Source/core/editing/SelectionEditor.cpp
+++ b/third_party/WebKit/Source/core/editing/SelectionEditor.cpp
@@ -123,6 +123,8 @@
 }
 
 void SelectionEditor::markCacheDirty() {
+  if (m_cacheIsDirty)
+    return;
   m_cachedVisibleSelectionInFlatTree = VisibleSelectionInFlatTree();
   m_cachedVisibleSelectionInDOMTree = VisibleSelection();
   m_cacheIsDirty = true;
diff --git a/third_party/WebKit/Source/core/editing/state_machines/BackwardCodePointStateMachine.cpp b/third_party/WebKit/Source/core/editing/state_machines/BackwardCodePointStateMachine.cpp
new file mode 100644
index 0000000..022aa03
--- /dev/null
+++ b/third_party/WebKit/Source/core/editing/state_machines/BackwardCodePointStateMachine.cpp
@@ -0,0 +1,69 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "core/editing/state_machines/BackwardCodePointStateMachine.h"
+
+namespace blink {
+
+enum class BackwardCodePointStateMachine::BackwardCodePointState {
+  NotSurrogate,
+  TrailSurrogate,
+  Invalid,
+};
+
+BackwardCodePointStateMachine::BackwardCodePointStateMachine()
+    : m_state(BackwardCodePointState::NotSurrogate) {}
+
+TextSegmentationMachineState
+BackwardCodePointStateMachine::feedPrecedingCodeUnit(UChar codeUnit) {
+  switch (m_state) {
+    case BackwardCodePointState::NotSurrogate:
+      if (U16_IS_LEAD(codeUnit)) {
+        m_codeUnitsToBeDeleted = 0;
+        m_state = BackwardCodePointState::Invalid;
+        return TextSegmentationMachineState::Invalid;
+      }
+      ++m_codeUnitsToBeDeleted;
+      if (U16_IS_TRAIL(codeUnit)) {
+        m_state = BackwardCodePointState::TrailSurrogate;
+        return TextSegmentationMachineState::NeedMoreCodeUnit;
+      }
+      return TextSegmentationMachineState::Finished;
+    case BackwardCodePointState::TrailSurrogate:
+      if (U16_IS_LEAD(codeUnit)) {
+        ++m_codeUnitsToBeDeleted;
+        m_state = BackwardCodePointState::NotSurrogate;
+        return TextSegmentationMachineState::Finished;
+      }
+      m_codeUnitsToBeDeleted = 0;
+      m_state = BackwardCodePointState::Invalid;
+      return TextSegmentationMachineState::Invalid;
+    case BackwardCodePointState::Invalid:
+      m_codeUnitsToBeDeleted = 0;
+      return TextSegmentationMachineState::Invalid;
+  }
+  NOTREACHED();
+  return TextSegmentationMachineState::Invalid;
+}
+
+TextSegmentationMachineState
+BackwardCodePointStateMachine::feedFollowingCodeUnit(UChar codeUnit) {
+  NOTREACHED();
+  return TextSegmentationMachineState::Invalid;
+}
+
+bool BackwardCodePointStateMachine::atCodePointBoundary() {
+  return m_state == BackwardCodePointState::NotSurrogate;
+}
+
+int BackwardCodePointStateMachine::getBoundaryOffset() {
+  return -m_codeUnitsToBeDeleted;
+}
+
+void BackwardCodePointStateMachine::reset() {
+  m_codeUnitsToBeDeleted = 0;
+  m_state = BackwardCodePointState::NotSurrogate;
+}
+
+}  // namespace blink
diff --git a/third_party/WebKit/Source/core/editing/state_machines/BackwardCodePointStateMachine.h b/third_party/WebKit/Source/core/editing/state_machines/BackwardCodePointStateMachine.h
new file mode 100644
index 0000000..5025171
--- /dev/null
+++ b/third_party/WebKit/Source/core/editing/state_machines/BackwardCodePointStateMachine.h
@@ -0,0 +1,52 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef BackwardCodePointStateMachine_h
+#define BackwardCodePointStateMachine_h
+
+#include "core/CoreExport.h"
+#include "core/editing/state_machines/TextSegmentationMachineState.h"
+#include "wtf/Allocator.h"
+#include "wtf/Noncopyable.h"
+#include "wtf/text/Unicode.h"
+
+namespace blink {
+
+class CORE_EXPORT BackwardCodePointStateMachine {
+  STACK_ALLOCATED();
+  WTF_MAKE_NONCOPYABLE(BackwardCodePointStateMachine);
+
+ public:
+  BackwardCodePointStateMachine();
+  ~BackwardCodePointStateMachine() = default;
+
+  // Prepares by feeding preceding text.
+  TextSegmentationMachineState feedPrecedingCodeUnit(UChar codeUnit);
+
+  // Finds boundary offset by feeding following text.
+  TextSegmentationMachineState feedFollowingCodeUnit(UChar codeUnit);
+
+  // Returns true if we are at code point boundary.
+  bool atCodePointBoundary();
+
+  // Returns the next boundary offset.
+  int getBoundaryOffset();
+
+  // Resets the internal state to the initial state.
+  void reset();
+
+ private:
+  enum class BackwardCodePointState;
+
+  // The number of code units to be deleted.
+  // Nothing to delete if there is an invalid surrogate pair.
+  int m_codeUnitsToBeDeleted = 0;
+
+  // The internal state.
+  BackwardCodePointState m_state;
+};
+
+}  // namespace blink
+
+#endif
diff --git a/third_party/WebKit/Source/core/editing/state_machines/BackwardCodePointStateMachineTest.cpp b/third_party/WebKit/Source/core/editing/state_machines/BackwardCodePointStateMachineTest.cpp
new file mode 100644
index 0000000..9db55f7
--- /dev/null
+++ b/third_party/WebKit/Source/core/editing/state_machines/BackwardCodePointStateMachineTest.cpp
@@ -0,0 +1,73 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "core/editing/state_machines/BackwardCodePointStateMachine.h"
+
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace blink {
+
+namespace {
+const TextSegmentationMachineState kInvalid =
+    TextSegmentationMachineState::Invalid;
+const TextSegmentationMachineState kNeedMoreCodeUnit =
+    TextSegmentationMachineState::NeedMoreCodeUnit;
+const TextSegmentationMachineState kFinished =
+    TextSegmentationMachineState::Finished;
+}  // namespace
+
+TEST(BackwardCodePointStateMachineTest, DoNothingCase) {
+  BackwardCodePointStateMachine machine;
+  EXPECT_EQ(0, machine.getBoundaryOffset());
+}
+
+TEST(BackwardCodePointStateMachineTest, SingleCharacter) {
+  BackwardCodePointStateMachine machine;
+  EXPECT_EQ(kFinished, machine.feedPrecedingCodeUnit('a'));
+  EXPECT_EQ(-1, machine.getBoundaryOffset());
+
+  machine.reset();
+  EXPECT_EQ(kFinished, machine.feedPrecedingCodeUnit('-'));
+  EXPECT_EQ(-1, machine.getBoundaryOffset());
+
+  machine.reset();
+  EXPECT_EQ(kFinished, machine.feedPrecedingCodeUnit('\t'));
+  EXPECT_EQ(-1, machine.getBoundaryOffset());
+
+  machine.reset();
+  // U+3042 HIRAGANA LETTER A.
+  EXPECT_EQ(kFinished, machine.feedPrecedingCodeUnit(0x3042));
+  EXPECT_EQ(-1, machine.getBoundaryOffset());
+}
+
+TEST(BackwardCodePointStateMachineTest, SurrogatePair) {
+  BackwardCodePointStateMachine machine;
+
+  // U+20BB7 is \uD83D\uDDFA in UTF-16.
+  const UChar leadSurrogate = 0xD842;
+  const UChar trailSurrogate = 0xDFB7;
+
+  EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(trailSurrogate));
+  EXPECT_EQ(kFinished, machine.feedPrecedingCodeUnit(leadSurrogate));
+  EXPECT_EQ(-2, machine.getBoundaryOffset());
+
+  // Edge cases
+  // Unpaired trailing surrogate. Nothing to delete.
+  machine.reset();
+  EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(trailSurrogate));
+  EXPECT_EQ(kInvalid, machine.feedPrecedingCodeUnit('a'));
+  EXPECT_EQ(0, machine.getBoundaryOffset());
+
+  machine.reset();
+  EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(trailSurrogate));
+  EXPECT_EQ(kInvalid, machine.feedPrecedingCodeUnit(trailSurrogate));
+  EXPECT_EQ(0, machine.getBoundaryOffset());
+
+  // Unpaired leading surrogate. Nothing to delete.
+  machine.reset();
+  EXPECT_EQ(kInvalid, machine.feedPrecedingCodeUnit(leadSurrogate));
+  EXPECT_EQ(0, machine.getBoundaryOffset());
+}
+
+}  // namespace blink
diff --git a/third_party/WebKit/Source/core/editing/state_machines/ForwardCodePointStateMachine.cpp b/third_party/WebKit/Source/core/editing/state_machines/ForwardCodePointStateMachine.cpp
new file mode 100644
index 0000000..aba73a2
--- /dev/null
+++ b/third_party/WebKit/Source/core/editing/state_machines/ForwardCodePointStateMachine.cpp
@@ -0,0 +1,69 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "core/editing/state_machines/ForwardCodePointStateMachine.h"
+
+namespace blink {
+
+enum class ForwardCodePointStateMachine::ForwardCodePointState {
+  NotSurrogate,
+  LeadSurrogate,
+  Invalid,
+};
+
+ForwardCodePointStateMachine::ForwardCodePointStateMachine()
+    : m_state(ForwardCodePointState::NotSurrogate) {}
+
+TextSegmentationMachineState
+ForwardCodePointStateMachine::feedFollowingCodeUnit(UChar codeUnit) {
+  switch (m_state) {
+    case ForwardCodePointState::NotSurrogate:
+      if (U16_IS_TRAIL(codeUnit)) {
+        m_codeUnitsToBeDeleted = 0;
+        m_state = ForwardCodePointState::Invalid;
+        return TextSegmentationMachineState::Invalid;
+      }
+      ++m_codeUnitsToBeDeleted;
+      if (U16_IS_LEAD(codeUnit)) {
+        m_state = ForwardCodePointState::LeadSurrogate;
+        return TextSegmentationMachineState::NeedMoreCodeUnit;
+      }
+      return TextSegmentationMachineState::Finished;
+    case ForwardCodePointState::LeadSurrogate:
+      if (U16_IS_TRAIL(codeUnit)) {
+        ++m_codeUnitsToBeDeleted;
+        m_state = ForwardCodePointState::NotSurrogate;
+        return TextSegmentationMachineState::Finished;
+      }
+      m_codeUnitsToBeDeleted = 0;
+      m_state = ForwardCodePointState::Invalid;
+      return TextSegmentationMachineState::Invalid;
+    case ForwardCodePointState::Invalid:
+      m_codeUnitsToBeDeleted = 0;
+      return TextSegmentationMachineState::Invalid;
+  }
+  NOTREACHED();
+  return TextSegmentationMachineState::Invalid;
+}
+
+TextSegmentationMachineState
+ForwardCodePointStateMachine::feedPrecedingCodeUnit(UChar codeUnit) {
+  NOTREACHED();
+  return TextSegmentationMachineState::Invalid;
+}
+
+bool ForwardCodePointStateMachine::atCodePointBoundary() {
+  return m_state == ForwardCodePointState::NotSurrogate;
+}
+
+int ForwardCodePointStateMachine::getBoundaryOffset() {
+  return m_codeUnitsToBeDeleted;
+}
+
+void ForwardCodePointStateMachine::reset() {
+  m_codeUnitsToBeDeleted = 0;
+  m_state = ForwardCodePointState::NotSurrogate;
+}
+
+}  // namespace blink
diff --git a/third_party/WebKit/Source/core/editing/state_machines/ForwardCodePointStateMachine.h b/third_party/WebKit/Source/core/editing/state_machines/ForwardCodePointStateMachine.h
new file mode 100644
index 0000000..037292b
--- /dev/null
+++ b/third_party/WebKit/Source/core/editing/state_machines/ForwardCodePointStateMachine.h
@@ -0,0 +1,52 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef ForwardCodePointStateMachine_h
+#define ForwardCodePointStateMachine_h
+
+#include "core/CoreExport.h"
+#include "core/editing/state_machines/TextSegmentationMachineState.h"
+#include "wtf/Allocator.h"
+#include "wtf/Noncopyable.h"
+#include "wtf/text/Unicode.h"
+
+namespace blink {
+
+class CORE_EXPORT ForwardCodePointStateMachine {
+  STACK_ALLOCATED();
+  WTF_MAKE_NONCOPYABLE(ForwardCodePointStateMachine);
+
+ public:
+  ForwardCodePointStateMachine();
+  ~ForwardCodePointStateMachine() = default;
+
+  // Prepares by feeding preceding text.
+  TextSegmentationMachineState feedPrecedingCodeUnit(UChar codeUnit);
+
+  // Finds boundary offset by feeding following text.
+  TextSegmentationMachineState feedFollowingCodeUnit(UChar codeUnit);
+
+  // Returns true if we are at code point boundary.
+  bool atCodePointBoundary();
+
+  // Returns the next boundary offset.
+  int getBoundaryOffset();
+
+  // Resets the internal state to the initial state.
+  void reset();
+
+ private:
+  enum class ForwardCodePointState;
+
+  // The number of code units to be deleted.
+  // Nothing to delete if there is an invalid surrogate pair.
+  int m_codeUnitsToBeDeleted = 0;
+
+  // The internal state.
+  ForwardCodePointState m_state;
+};
+
+}  // namespace blink
+
+#endif
diff --git a/third_party/WebKit/Source/core/editing/state_machines/ForwardCodePointStateMachineTest.cpp b/third_party/WebKit/Source/core/editing/state_machines/ForwardCodePointStateMachineTest.cpp
new file mode 100644
index 0000000..499c775
--- /dev/null
+++ b/third_party/WebKit/Source/core/editing/state_machines/ForwardCodePointStateMachineTest.cpp
@@ -0,0 +1,73 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "core/editing/state_machines/ForwardCodePointStateMachine.h"
+
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace blink {
+
+namespace {
+const TextSegmentationMachineState kInvalid =
+    TextSegmentationMachineState::Invalid;
+const TextSegmentationMachineState kNeedMoreCodeUnit =
+    TextSegmentationMachineState::NeedMoreCodeUnit;
+const TextSegmentationMachineState kFinished =
+    TextSegmentationMachineState::Finished;
+}  // namespace
+
+TEST(ForwardCodePointStateMachineTest, DoNothingCase) {
+  ForwardCodePointStateMachine machine;
+  EXPECT_EQ(0, machine.getBoundaryOffset());
+}
+
+TEST(ForwardCodePointStateMachineTest, SingleCharacter) {
+  ForwardCodePointStateMachine machine;
+  EXPECT_EQ(kFinished, machine.feedFollowingCodeUnit('a'));
+  EXPECT_EQ(1, machine.getBoundaryOffset());
+
+  machine.reset();
+  EXPECT_EQ(kFinished, machine.feedFollowingCodeUnit('-'));
+  EXPECT_EQ(1, machine.getBoundaryOffset());
+
+  machine.reset();
+  EXPECT_EQ(kFinished, machine.feedFollowingCodeUnit('\t'));
+  EXPECT_EQ(1, machine.getBoundaryOffset());
+
+  machine.reset();
+  // U+3042 HIRAGANA LETTER A.
+  EXPECT_EQ(kFinished, machine.feedFollowingCodeUnit(0x3042));
+  EXPECT_EQ(1, machine.getBoundaryOffset());
+}
+
+TEST(ForwardCodePointStateMachineTest, SurrogatePair) {
+  ForwardCodePointStateMachine machine;
+
+  // U+20BB7 is \uD83D\uDDFA in UTF-16.
+  const UChar leadSurrogate = 0xD842;
+  const UChar trailSurrogate = 0xDFB7;
+
+  EXPECT_EQ(kNeedMoreCodeUnit, machine.feedFollowingCodeUnit(leadSurrogate));
+  EXPECT_EQ(kFinished, machine.feedFollowingCodeUnit(trailSurrogate));
+  EXPECT_EQ(2, machine.getBoundaryOffset());
+
+  // Edge cases
+  // Unpaired leading surrogate. Nothing to delete.
+  machine.reset();
+  EXPECT_EQ(kNeedMoreCodeUnit, machine.feedFollowingCodeUnit(leadSurrogate));
+  EXPECT_EQ(kInvalid, machine.feedFollowingCodeUnit('a'));
+  EXPECT_EQ(0, machine.getBoundaryOffset());
+
+  machine.reset();
+  EXPECT_EQ(kNeedMoreCodeUnit, machine.feedFollowingCodeUnit(leadSurrogate));
+  EXPECT_EQ(kInvalid, machine.feedFollowingCodeUnit(leadSurrogate));
+  EXPECT_EQ(0, machine.getBoundaryOffset());
+
+  // Unpaired trailing surrogate. Nothing to delete.
+  machine.reset();
+  EXPECT_EQ(kInvalid, machine.feedFollowingCodeUnit(trailSurrogate));
+  EXPECT_EQ(0, machine.getBoundaryOffset());
+}
+
+}  // namespace blink
diff --git a/third_party/WebKit/Source/core/frame/UseCounter.h b/third_party/WebKit/Source/core/frame/UseCounter.h
index 1f8c0e9b..9f8b010b 100644
--- a/third_party/WebKit/Source/core/frame/UseCounter.h
+++ b/third_party/WebKit/Source/core/frame/UseCounter.h
@@ -1473,6 +1473,7 @@
     RtcpMuxPolicyNegotiate = 1823,
     DOMClobberedVariableAccessed = 1824,
     HTMLDocumentCreateProcessingInstruction = 1825,
+    FetchResponseConstructionWithStream = 1826,
 
     // Add new features immediately above this line. Don't change assigned
     // numbers of any item, and don't reuse removed slots.
diff --git a/third_party/WebKit/Source/core/html/forms/RangeInputType.cpp b/third_party/WebKit/Source/core/html/forms/RangeInputType.cpp
index e2a50b29..7d90168 100644
--- a/third_party/WebKit/Source/core/html/forms/RangeInputType.cpp
+++ b/third_party/WebKit/Source/core/html/forms/RangeInputType.cpp
@@ -151,7 +151,7 @@
 }
 
 void RangeInputType::handleMouseDownEvent(MouseEvent* event) {
-  if (element().isDisabledOrReadOnly())
+  if (element().isDisabledFormControl())
     return;
 
   Node* targetNode = event->target()->toNode();
@@ -170,7 +170,7 @@
 }
 
 void RangeInputType::handleKeydownEvent(KeyboardEvent* event) {
-  if (element().isDisabledOrReadOnly())
+  if (element().isDisabledFormControl())
     return;
 
   const String& key = event->key();
diff --git a/third_party/WebKit/Source/core/html/shadow/SliderThumbElement.cpp b/third_party/WebKit/Source/core/html/shadow/SliderThumbElement.cpp
index b9a47aa..256d2b6 100644
--- a/third_party/WebKit/Source/core/html/shadow/SliderThumbElement.cpp
+++ b/third_party/WebKit/Source/core/html/shadow/SliderThumbElement.cpp
@@ -206,7 +206,7 @@
   // Missing this kind of check is likely to occur elsewhere if adding it in
   // each shadow element.
   HTMLInputElement* input = hostInput();
-  if (!input || input->isDisabledOrReadOnly()) {
+  if (!input || input->isDisabledFormControl()) {
     stopDragging();
     HTMLDivElement::defaultEventHandler(event);
     return;
@@ -239,7 +239,7 @@
 
 bool SliderThumbElement::willRespondToMouseMoveEvents() {
   const HTMLInputElement* input = hostInput();
-  if (input && !input->isDisabledOrReadOnly() && m_inDragMode)
+  if (input && !input->isDisabledFormControl() && m_inDragMode)
     return true;
 
   return HTMLDivElement::willRespondToMouseMoveEvents();
@@ -247,7 +247,7 @@
 
 bool SliderThumbElement::willRespondToMouseClickEvents() {
   const HTMLInputElement* input = hostInput();
-  if (input && !input->isDisabledOrReadOnly())
+  if (input && !input->isDisabledFormControl())
     return true;
 
   return HTMLDivElement::willRespondToMouseClickEvents();
@@ -327,7 +327,7 @@
 
 void SliderContainerElement::handleTouchEvent(TouchEvent* event) {
   HTMLInputElement* input = hostInput();
-  if (input->isDisabledOrReadOnly())
+  if (input->isDisabledFormControl())
     return;
 
   if (event->type() == EventTypeNames::touchend) {
diff --git a/third_party/WebKit/Source/modules/fetch/Body.cpp b/third_party/WebKit/Source/modules/fetch/Body.cpp
index b168fb3..909d960 100644
--- a/third_party/WebKit/Source/modules/fetch/Body.cpp
+++ b/third_party/WebKit/Source/modules/fetch/Body.cpp
@@ -11,7 +11,6 @@
 #include "core/dom/DOMArrayBuffer.h"
 #include "core/dom/DOMTypedArray.h"
 #include "core/fileapi/Blob.h"
-#include "core/frame/UseCounter.h"
 #include "modules/fetch/BodyStreamBuffer.h"
 #include "modules/fetch/FetchDataLoader.h"
 #include "public/platform/WebDataConsumerHandle.h"
@@ -199,8 +198,7 @@
   return promise;
 }
 
-ScriptValue Body::bodyWithUseCounter(ScriptState* scriptState) {
-  UseCounter::count(getExecutionContext(), UseCounter::FetchBodyStream);
+ScriptValue Body::body(ScriptState* scriptState) {
   if (!bodyBuffer())
     return ScriptValue::createNull(scriptState);
   ScriptValue stream = bodyBuffer()->stream();
diff --git a/third_party/WebKit/Source/modules/fetch/Body.h b/third_party/WebKit/Source/modules/fetch/Body.h
index b7f07b0a..906d033 100644
--- a/third_party/WebKit/Source/modules/fetch/Body.h
+++ b/third_party/WebKit/Source/modules/fetch/Body.h
@@ -43,7 +43,7 @@
   ScriptPromise formData(ScriptState*);
   ScriptPromise json(ScriptState*);
   ScriptPromise text(ScriptState*);
-  ScriptValue bodyWithUseCounter(ScriptState*);
+  ScriptValue body(ScriptState*);
   virtual BodyStreamBuffer* bodyBuffer() = 0;
   virtual const BodyStreamBuffer* bodyBuffer() const = 0;
 
diff --git a/third_party/WebKit/Source/modules/fetch/Response.cpp b/third_party/WebKit/Source/modules/fetch/Response.cpp
index 21c44bf..d5319f4 100644
--- a/third_party/WebKit/Source/modules/fetch/Response.cpp
+++ b/third_party/WebKit/Source/modules/fetch/Response.cpp
@@ -4,6 +4,7 @@
 
 #include "modules/fetch/Response.h"
 
+#include <memory>
 #include "bindings/core/v8/Dictionary.h"
 #include "bindings/core/v8/ExceptionState.h"
 #include "bindings/core/v8/ScriptState.h"
@@ -19,6 +20,7 @@
 #include "core/dom/DOMArrayBufferView.h"
 #include "core/dom/URLSearchParams.h"
 #include "core/fileapi/Blob.h"
+#include "core/frame/UseCounter.h"
 #include "core/html/FormData.h"
 #include "core/streams/ReadableStreamOperations.h"
 #include "modules/fetch/BlobBytesConsumer.h"
@@ -31,7 +33,6 @@
 #include "platform/network/NetworkUtils.h"
 #include "public/platform/modules/serviceworker/WebServiceWorkerResponse.h"
 #include "wtf/RefPtr.h"
-#include <memory>
 
 namespace blink {
 
@@ -172,6 +173,8 @@
     contentType = "application/x-www-form-urlencoded;charset=UTF-8";
   } else if (ReadableStreamOperations::isReadableStream(scriptState,
                                                         bodyValue)) {
+    UseCounter::count(executionContext,
+                      UseCounter::FetchResponseConstructionWithStream);
     bodyBuffer = new BodyStreamBuffer(scriptState, bodyValue);
   } else {
     String string = toUSVString(isolate, body, exceptionState);
diff --git a/third_party/WebKit/Source/modules/fetch/Response.idl b/third_party/WebKit/Source/modules/fetch/Response.idl
index 2332d3b..361f5940 100644
--- a/third_party/WebKit/Source/modules/fetch/Response.idl
+++ b/third_party/WebKit/Source/modules/fetch/Response.idl
@@ -28,7 +28,7 @@
 
     [RaisesException, CallWith=ScriptState] Response clone();
 
-    [CallWith=ScriptState, ImplementedAs=bodyWithUseCounter] readonly attribute any body;
+    [CallWith=ScriptState, MeasureAs=FetchBodyStream] readonly attribute any body;
 };
 
 Response implements Body;
diff --git a/third_party/WebKit/Source/modules/mediarecorder/MediaRecorder.cpp b/third_party/WebKit/Source/modules/mediarecorder/MediaRecorder.cpp
index 1d8531d..0ad0def 100644
--- a/third_party/WebKit/Source/modules/mediarecorder/MediaRecorder.cpp
+++ b/third_party/WebKit/Source/modules/mediarecorder/MediaRecorder.cpp
@@ -163,7 +163,6 @@
                              ExceptionState& exceptionState)
     : SuspendableObject(context),
       m_stream(stream),
-      m_streamAmountOfTracks(stream->getTracks().size()),
       m_mimeType(options.hasMimeType() ? options.mimeType() : kDefaultMimeType),
       m_stopped(true),
       m_audioBitsPerSecond(0),
@@ -332,13 +331,6 @@
     m_stopped = false;
     scheduleDispatchEvent(Event::create(EventTypeNames::start));
   }
-  if (m_stream && m_streamAmountOfTracks != m_stream->getTracks().size()) {
-    m_streamAmountOfTracks = m_stream->getTracks().size();
-    onError("Amount of tracks in MediaStream has changed.");
-  }
-
-  // TODO(mcasas): Act as |m_ignoredMutedMedia| instructs if |m_stream| track(s)
-  // is in muted() state.
 
   if (!m_blobData) {
     m_blobData = BlobData::create();
@@ -358,8 +350,8 @@
 }
 
 void MediaRecorder::onError(const WebString& message) {
-  // TODO(mcasas): Beef up the Error Event and add the |message|, see
-  // https://github.com/w3c/mediacapture-record/issues/31
+  DLOG(ERROR) << message.ascii();
+  stopRecording();
   scheduleDispatchEvent(Event::create(EventTypeNames::error));
 }
 
diff --git a/third_party/WebKit/Source/modules/mediarecorder/MediaRecorder.h b/third_party/WebKit/Source/modules/mediarecorder/MediaRecorder.h
index 5133beb..aa0324c 100644
--- a/third_party/WebKit/Source/modules/mediarecorder/MediaRecorder.h
+++ b/third_party/WebKit/Source/modules/mediarecorder/MediaRecorder.h
@@ -100,7 +100,6 @@
   void dispatchScheduledEvent();
 
   Member<MediaStream> m_stream;
-  size_t m_streamAmountOfTracks;
   String m_mimeType;
   bool m_stopped;
   int m_audioBitsPerSecond;
diff --git a/third_party/WebKit/Source/modules/vr/VRDisplay.cpp b/third_party/WebKit/Source/modules/vr/VRDisplay.cpp
index 0c6bc0e..11ab5b1 100644
--- a/third_party/WebKit/Source/modules/vr/VRDisplay.cpp
+++ b/third_party/WebKit/Source/modules/vr/VRDisplay.cpp
@@ -365,7 +365,7 @@
 
   resolver->resolve();
 
-  forceExitPresent();
+  stopPresenting();
 
   return promise;
 }
@@ -447,30 +447,12 @@
   OnPresentChange();
 }
 
+// Need to close service if exists and then free rendering context.
 void VRDisplay::forceExitPresent() {
-  if (m_isPresenting) {
-    if (!m_capabilities->hasExternalDisplay()) {
-      auto canvas = m_layer.source();
-      Fullscreen::fullyExitFullscreen(canvas->document());
-      m_fullscreenCheckTimer.stop();
-      if (!m_fullscreenOrigWidth.isNull()) {
-        canvas->setInlineStyleProperty(CSSPropertyWidth, m_fullscreenOrigWidth);
-        m_fullscreenOrigWidth = String();
-      }
-      if (!m_fullscreenOrigHeight.isNull()) {
-        canvas->setInlineStyleProperty(CSSPropertyWidth,
-                                       m_fullscreenOrigHeight);
-        m_fullscreenOrigHeight = String();
-      }
-    } else {
-      // Can't get into this presentation mode, so nothing to do here.
-    }
-    m_isPresenting = false;
-    OnPresentChange();
+  if (m_display) {
+    m_display->ExitPresent();
   }
-
-  m_renderingContext = nullptr;
-  m_contextGL = nullptr;
+  stopPresenting();
 }
 
 void VRDisplay::updateLayerBounds() {
@@ -612,7 +594,7 @@
 }
 
 void VRDisplay::OnExitPresent() {
-  forceExitPresent();
+  stopPresenting();
 }
 
 void VRDisplay::onConnected() {
@@ -625,6 +607,32 @@
       EventTypeNames::vrdisplaydisconnect, true, false, this, "disconnect"));
 }
 
+void VRDisplay::stopPresenting() {
+  if (m_isPresenting) {
+    if (!m_capabilities->hasExternalDisplay()) {
+      auto canvas = m_layer.source();
+      Fullscreen::fullyExitFullscreen(canvas->document());
+      m_fullscreenCheckTimer.stop();
+      if (!m_fullscreenOrigWidth.isNull()) {
+        canvas->setInlineStyleProperty(CSSPropertyWidth, m_fullscreenOrigWidth);
+        m_fullscreenOrigWidth = String();
+      }
+      if (!m_fullscreenOrigHeight.isNull()) {
+        canvas->setInlineStyleProperty(CSSPropertyWidth,
+                                       m_fullscreenOrigHeight);
+        m_fullscreenOrigHeight = String();
+      }
+    } else {
+      // Can't get into this presentation mode, so nothing to do here.
+    }
+    m_isPresenting = false;
+    OnPresentChange();
+  }
+
+  m_renderingContext = nullptr;
+  m_contextGL = nullptr;
+}
+
 void VRDisplay::OnActivate(device::mojom::blink::VRDisplayEventReason reason) {
   if (!m_navigatorVR->isFocused() || m_displayBlurred)
     return;
diff --git a/third_party/WebKit/Source/modules/vr/VRDisplay.h b/third_party/WebKit/Source/modules/vr/VRDisplay.h
index 2f0d66a6..5e29e95 100644
--- a/third_party/WebKit/Source/modules/vr/VRDisplay.h
+++ b/third_party/WebKit/Source/modules/vr/VRDisplay.h
@@ -122,6 +122,8 @@
   void onConnected();
   void onDisconnected();
 
+  void stopPresenting();
+
   void OnPresentChange();
 
   // VRDisplayClient
diff --git a/ui/file_manager/file_manager/foreground/js/thumbnail_loader.js b/ui/file_manager/file_manager/foreground/js/thumbnail_loader.js
index 49898f02..368e189 100644
--- a/ui/file_manager/file_manager/foreground/js/thumbnail_loader.js
+++ b/ui/file_manager/file_manager/foreground/js/thumbnail_loader.js
@@ -467,9 +467,8 @@
       priority: this.priority_,
       timestamp: modificationTime
   };
-  if (this.metadata_ && this.metadata_.media &&
-      this.metadata_.media.imageTransform) {
-    loaderOptions.orientation = this.metadata_.media.imageTransform;
+  if (this.transform_) {
+    loaderOptions.orientation = this.transform_;
   }
   // Comsume the transform parameter to avoid duplicated transformation in
   // getImage().
diff --git a/ui/file_manager/file_manager/foreground/js/thumbnail_loader_unittest.js b/ui/file_manager/file_manager/foreground/js/thumbnail_loader_unittest.js
index 509a4b0..e0c7f88 100644
--- a/ui/file_manager/file_manager/foreground/js/thumbnail_loader_unittest.js
+++ b/ui/file_manager/file_manager/foreground/js/thumbnail_loader_unittest.js
@@ -175,6 +175,8 @@
       load: function(url, callback, opt_option) {
         // Assert that data url is passed.
         assertTrue(/^data:/i.test(url));
+        // Assert that the rotation is propagated to ImageLoader.
+        assertEquals(1, opt_option.orientation.rotate90);
         // ImageLoader returns rotated image.
         callback({status: 'success', data: generateSampleImageDataUrl(32, 64),
             width: 32, height: 64});
diff --git a/ui/message_center/BUILD.gn b/ui/message_center/BUILD.gn
index a9d445b8..13af4d74 100644
--- a/ui/message_center/BUILD.gn
+++ b/ui/message_center/BUILD.gn
@@ -201,6 +201,7 @@
     "//base",
     "//base/test:test_support",
     "//skia",
+    "//testing/gmock",
     "//testing/gtest",
     "//ui/base",
     "//ui/base:test_support",
diff --git a/ui/message_center/views/message_center_view.cc b/ui/message_center/views/message_center_view.cc
index 0ea74df..ed89893 100644
--- a/ui/message_center/views/message_center_view.cc
+++ b/ui/message_center/views/message_center_view.cc
@@ -366,25 +366,30 @@
   Update(true /* animate */);
 }
 
-void MessageCenterView::OnNotificationUpdated(const std::string& id) {
-  NotificationViewsMap::const_iterator view_iter = notification_views_.find(id);
-  if (view_iter == notification_views_.end())
-    return;
-
+// This is a separate function so we can override it in tests.
+bool MessageCenterView::SetRepositionTarget() {
   // Set the item on the mouse cursor as the reposition target so that it
   // should stick to the current position over the update.
-  bool set = false;
   if (message_list_view_->IsMouseHovered()) {
     for (const auto& hover_id_view : notification_views_) {
       MessageView* hover_view = hover_id_view.second;
       if (hover_view->IsMouseHovered()) {
         message_list_view_->SetRepositionTarget(hover_view->bounds());
-        set = true;
-        break;
+        return true;
       }
     }
   }
-  if (!set)
+  return false;
+}
+
+void MessageCenterView::OnNotificationUpdated(const std::string& id) {
+  NotificationViewsMap::const_iterator view_iter = notification_views_.find(id);
+  if (view_iter == notification_views_.end())
+    return;
+
+  // If there is no reposition target anymore, make sure to reset the reposition
+  // session.
+  if (!SetRepositionTarget())
     message_list_view_->ResetRepositionSession();
 
   // TODO(dimich): add MessageCenter::GetVisibleNotificationById(id)
diff --git a/ui/message_center/views/message_center_view.h b/ui/message_center/views/message_center_view.h
index bd923fa5..da206b0 100644
--- a/ui/message_center/views/message_center_view.h
+++ b/ui/message_center/views/message_center_view.h
@@ -62,6 +62,10 @@
   void SetIsClosing(bool is_closing);
 
  protected:
+  // Potentially sets the reposition target, and then returns whether or not it
+  // was was set.
+  virtual bool SetRepositionTarget();
+
   // Overridden from views::View:
   void Layout() override;
   gfx::Size GetPreferredSize() const override;
diff --git a/ui/message_center/views/message_center_view_unittest.cc b/ui/message_center/views/message_center_view_unittest.cc
index 36a8302..4f8a0a1 100644
--- a/ui/message_center/views/message_center_view_unittest.cc
+++ b/ui/message_center/views/message_center_view_unittest.cc
@@ -115,6 +115,37 @@
   bool locked_ = false;
 };
 
+// This is the class we are testing, but we need to override some functions
+// in it, hence MockMessageCenterView.
+class MockMessageCenterView : public MessageCenterView {
+ public:
+  MockMessageCenterView(MessageCenter* message_center,
+                        MessageCenterTray* tray,
+                        int max_height,
+                        bool initially_settings_visible);
+
+  bool SetRepositionTarget() override;
+
+ private:
+  DISALLOW_COPY_AND_ASSIGN(MockMessageCenterView);
+};
+
+MockMessageCenterView::MockMessageCenterView(MessageCenter* message_center,
+                                             MessageCenterTray* tray,
+                                             int max_height,
+                                             bool initially_settings_visible)
+    : MessageCenterView(message_center,
+                        tray,
+                        max_height,
+                        initially_settings_visible) {}
+
+// Always say that the current reposition session is still active, by
+// returning true. Normally the reposition session is set based on where the
+// mouse is hovering.
+bool MockMessageCenterView::SetRepositionTarget() {
+  return true;
+}
+
 /* Test fixture ***************************************************************/
 
 class MessageCenterViewTest : public views::ViewsTestBase,
@@ -175,7 +206,7 @@
   // The ownership map of notifications; the key is the id.
   std::map<std::string, std::unique_ptr<Notification>> notifications_;
   std::unique_ptr<views::Widget> widget_;
-  std::unique_ptr<MessageCenterView> message_center_view_;
+  std::unique_ptr<MockMessageCenterView> message_center_view_;
   std::unique_ptr<FakeMessageCenterImpl> message_center_;
   std::map<CallType,int> callCounts_;
 
@@ -214,9 +245,9 @@
   NotificationList::Notifications notifications = Notifications();
   message_center_->SetVisibleNotifications(notifications);
 
-  // Then create a new MessageCenterView with that single notification.
-  message_center_view_.reset(new MessageCenterView(
-      message_center_.get(), NULL, 100, false));
+  // Then create a new MockMessageCenterView with that single notification.
+  message_center_view_.reset(
+      new MockMessageCenterView(message_center_.get(), NULL, 100, false));
   GetMessageListView()->quit_message_loop_after_animation_for_test_ = true;
   GetMessageCenterView()->SetBounds(0, 0, 380, 600);
   message_center_view_->SetNotifications(notifications);
@@ -464,6 +495,70 @@
           GetMessageListView()->GetInsets().height());
 }
 
+TEST_F(MessageCenterViewTest, SizeAfterUpdateBelowWithRepositionTarget) {
+  EXPECT_EQ(2, GetMessageListView()->child_count());
+  // Make sure that notification 2 is placed above notification 1.
+  EXPECT_LT(GetNotificationView(kNotificationId2)->bounds().y(),
+            GetNotificationView(kNotificationId1)->bounds().y());
+
+  GetMessageListView()->SetRepositionTargetForTest(
+      GetNotificationView(kNotificationId1)->bounds());
+
+  std::unique_ptr<Notification> notification = base::MakeUnique<Notification>(
+      NOTIFICATION_TYPE_SIMPLE, std::string(kNotificationId2),
+      base::UTF8ToUTF16("title2"),
+      base::UTF8ToUTF16("message\nwhich\nis\nvertically\nlong\n."),
+      gfx::Image(), base::UTF8ToUTF16("display source"), GURL(),
+      NotifierId(NotifierId::APPLICATION, "extension_id"),
+      message_center::RichNotificationData(), nullptr);
+  UpdateNotification(kNotificationId2, std::move(notification));
+
+  // Wait until the animation finishes if available.
+  if (GetAnimator()->IsAnimating())
+    base::RunLoop().Run();
+
+  int width =
+      GetMessageListView()->width() - GetMessageListView()->GetInsets().width();
+  EXPECT_EQ(
+      GetMessageListView()->height(),
+      GetNotificationView(kNotificationId1)->GetHeightForWidth(width) +
+          (kMarginBetweenItems - MessageView::GetShadowInsets().bottom()) +
+          GetNotificationView(kNotificationId2)->GetHeightForWidth(width) +
+          GetMessageListView()->GetInsets().height());
+}
+
+TEST_F(MessageCenterViewTest, SizeAfterUpdateOfRepositionTarget) {
+  EXPECT_EQ(2, GetMessageListView()->child_count());
+  // Make sure that notification 2 is placed above notification 1.
+  EXPECT_LT(GetNotificationView(kNotificationId2)->bounds().y(),
+            GetNotificationView(kNotificationId1)->bounds().y());
+
+  GetMessageListView()->SetRepositionTargetForTest(
+      GetNotificationView(kNotificationId1)->bounds());
+
+  std::unique_ptr<Notification> notification = base::MakeUnique<Notification>(
+      NOTIFICATION_TYPE_SIMPLE, std::string(kNotificationId1),
+      base::UTF8ToUTF16("title2"),
+      base::UTF8ToUTF16("message\nwhich\nis\nvertically\nlong\n."),
+      gfx::Image(), base::UTF8ToUTF16("display source"), GURL(),
+      NotifierId(NotifierId::APPLICATION, "extension_id"),
+      message_center::RichNotificationData(), nullptr);
+  UpdateNotification(kNotificationId1, std::move(notification));
+
+  // Wait until the animation finishes if available.
+  if (GetAnimator()->IsAnimating())
+    base::RunLoop().Run();
+
+  int width =
+      GetMessageListView()->width() - GetMessageListView()->GetInsets().width();
+  EXPECT_EQ(
+      GetMessageListView()->height(),
+      GetNotificationView(kNotificationId1)->GetHeightForWidth(width) +
+          (kMarginBetweenItems - MessageView::GetShadowInsets().bottom()) +
+          GetNotificationView(kNotificationId2)->GetHeightForWidth(width) +
+          GetMessageListView()->GetInsets().height());
+}
+
 TEST_F(MessageCenterViewTest, SizeAfterRemove) {
   EXPECT_EQ(2, GetMessageListView()->child_count());
   RemoveNotification(kNotificationId1, false);
diff --git a/ui/message_center/views/message_list_view.cc b/ui/message_center/views/message_list_view.cc
index 0c0d6bf..51158fd 100644
--- a/ui/message_center/views/message_list_view.cc
+++ b/ui/message_center/views/message_list_view.cc
@@ -347,6 +347,54 @@
   }
 }
 
+std::vector<int> MessageListView::ComputeRepositionOffsets(
+    const std::vector<int>& heights,
+    const std::vector<bool>& deleting,
+    int target_index,
+    int padding) {
+  DCHECK_EQ(heights.size(), deleting.size());
+  // Calculate the vertical length between the top of message list and the top
+  // of target. This is to shrink or expand the height of the message list
+  // when the notifications above the target is changed.
+  int vertical_gap_to_target_from_top = GetInsets().top();
+  for (int i = 0; i < target_index; i++) {
+    if (!deleting[i])
+      vertical_gap_to_target_from_top += heights[i] + padding;
+  }
+
+  // If the calculated length is changed from |repositon_top_|, it means that
+  // some of items above the target are updated and their height are changed.
+  // Adjust the vertical length above the target.
+  fixed_height_ -= reposition_top_ - vertical_gap_to_target_from_top;
+  reposition_top_ = vertical_gap_to_target_from_top;
+
+  std::vector<int> positions;
+  positions.reserve(heights.size());
+  // Layout the items above the target.
+  int y = GetInsets().top();
+  for (int i = 0; i < target_index; i++) {
+    positions.push_back(y);
+    if (!deleting[i])
+      y += heights[i] + padding;
+  }
+  DCHECK_EQ(y, reposition_top_);
+
+  // Match the top with |reposition_top_|.
+  y = reposition_top_;
+  // Layout the target and the items below the target.
+  for (int i = target_index; i < int(heights.size()); i++) {
+    positions.push_back(y);
+    if (!deleting[i])
+      y += heights[i] + padding;
+  }
+  // If the target view, or any views below it expand they might exceed
+  // |fixed_height_|. Rather than letting them push out the bottom and be
+  // clipped, instead increase |fixed_height_|.
+  fixed_height_ = std::max(fixed_height_, y - padding + GetInsets().bottom());
+
+  return positions;
+}
+
 void MessageListView::AnimateNotificationsAboveTarget() {
   int target_index = -1;
   int padding = kMarginBetweenItems - MessageView::GetShadowInsets().bottom();
@@ -372,52 +420,22 @@
       }
     }
   }
+
   if (target_index != -1) {
-    // Cache for the heights of items, since calculating height is heavy
-    // operation and the heights shouldn't be changed in this block.
-    std::map<views::View*, int> height_cache;
-
-    // Calculate the vertical length between the top of message list and the top
-    // of target. This is to shrink or expand the height of the message list
-    // when the notifications above the target is changed.
-    int vertical_gap_to_target_from_top = GetInsets().height();
-    for (int i = 0; i < target_index; i++) {
+    std::vector<int> heights;
+    std::vector<bool> deleting;
+    heights.reserve(child_count());
+    deleting.reserve(child_count());
+    for (int i = 0; i < child_count(); i++) {
       views::View* child = child_at(i);
-      int height = child->GetHeightForWidth(child_area.width());
-      height_cache[child] = height;
-      if (deleting_views_.find(child) == deleting_views_.end())
-        vertical_gap_to_target_from_top += height + padding;
+      heights.push_back(child->GetHeightForWidth(child_area.width()));
+      deleting.push_back(deleting_views_.find(child) != deleting_views_.end());
     }
-
-    // If the calculated length is changed from |repositon_top_|, it means that
-    // some of items above the target are updated and their height are changed.
-    // Adjust the vertical length above the target.
-    if (reposition_top_ != vertical_gap_to_target_from_top) {
-      fixed_height_ -= reposition_top_ - vertical_gap_to_target_from_top;
-      reposition_top_ = vertical_gap_to_target_from_top;
+    std::vector<int> ys =
+        ComputeRepositionOffsets(heights, deleting, target_index, padding);
+    for (int i = 0; i < child_count(); ++i) {
+      AnimateChild(child_at(i), ys[i], heights[i], true /* animate_on_move */);
     }
-
-    // Match the top with |reposition_top_|.
-    int y = reposition_top_;
-    // Layout the target and the items below the target.
-    for (int i = target_index; i < child_count(); i++) {
-      views::View* child = child_at(i);
-      int height = child->GetHeightForWidth(child_area.width());
-      if (AnimateChild(child, y, height, false /* animate_on_move */))
-        y += height + padding;
-    }
-
-    // Layout the items above the target.
-    y = GetInsets().top();
-    for (int i = 0; i < target_index; i++) {
-      views::View* child = child_at(i);
-      DCHECK(height_cache.find(child) != height_cache.end());
-      int height = height_cache[child];
-      if (AnimateChild(child, y, height, true /* animate_on_move */))
-        y += height + padding;
-    }
-
-    DCHECK_EQ(y, reposition_top_);
   } else {
     // Layout all the items.
     int y = GetInsets().top();
diff --git a/ui/message_center/views/message_list_view.h b/ui/message_center/views/message_list_view.h
index e71bc8f..1104b47 100644
--- a/ui/message_center/views/message_list_view.h
+++ b/ui/message_center/views/message_list_view.h
@@ -7,6 +7,7 @@
 
 #include <list>
 #include <set>
+#include <vector>
 
 #include "base/macros.h"
 #include "ui/compositor/paint_context.h"
@@ -79,6 +80,11 @@
   // Animates all notifications above target downwards to align with the top of
   // the last closed notification.
   void AnimateNotificationsAboveTarget();
+  // Computes reposition offsets for |AnimateNotificationsAboveTarget|.
+  std::vector<int> ComputeRepositionOffsets(const std::vector<int>& heights,
+                                            const std::vector<bool>& deleting,
+                                            int target_index,
+                                            int padding);
 
   // Schedules animation for a child to the specified position. Returns false
   // if |child| will disappear after the animation.
diff --git a/ui/message_center/views/message_list_view_unittest.cc b/ui/message_center/views/message_list_view_unittest.cc
index 730bda1..96c54cd 100644
--- a/ui/message_center/views/message_list_view_unittest.cc
+++ b/ui/message_center/views/message_list_view_unittest.cc
@@ -9,6 +9,7 @@
 #include "base/macros.h"
 #include "base/memory/ptr_util.h"
 #include "base/strings/utf_string_conversions.h"
+#include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "ui/message_center/fake_message_center.h"
 #include "ui/message_center/notification.h"
@@ -18,6 +19,8 @@
 #include "ui/message_center/views/notification_view.h"
 #include "ui/views/test/views_test_base.h"
 
+using ::testing::ElementsAre;
+
 namespace message_center {
 
 static const char* kNotificationId1 = "notification id 1";
@@ -124,6 +127,18 @@
     return message_list_view_.get();
   }
 
+  int& reposition_top() { return message_list_view_->reposition_top_; }
+
+  int& fixed_height() { return message_list_view_->fixed_height_; }
+
+  std::vector<int> ComputeRepositionOffsets(const std::vector<int>& heights,
+                                            const std::vector<bool>& deleting,
+                                            int target_index,
+                                            int padding) {
+    return message_list_view_->ComputeRepositionOffsets(heights, deleting,
+                                                        target_index, padding);
+  }
+
   MockNotificationView* CreateNotificationView(
       const Notification& notification) {
     return new MockNotificationView(this, notification, this);
@@ -189,4 +204,175 @@
   EXPECT_TRUE(message_list_view()->Contains(notification_view));
 }
 
+TEST_F(MessageListViewTest, RepositionOffsets) {
+  const auto insets = message_list_view()->GetInsets();
+  const int top = insets.top();
+  std::vector<int> positions;
+
+  // Notification above grows. |reposition_top| should remain at the same
+  // offset from the bottom.
+  fixed_height() = 4 + insets.height();
+  reposition_top() = 1 + top;
+  positions =
+      ComputeRepositionOffsets({2, 1, 1, 1}, {false, false, false, false},
+                               1 /* target_index */, 0 /* padding */);
+  EXPECT_THAT(positions, ElementsAre(top, top + 2, top + 3, top + 4));
+  EXPECT_EQ(4 + insets.height() + 1, fixed_height());
+  EXPECT_EQ(1 + top + 1, reposition_top());
+
+  // Notification above shrinks. |reposition_top| should remain at the same
+  // offset from the bottom.
+  fixed_height() = 5 + insets.height();
+  reposition_top() = 2 + top;
+  positions =
+      ComputeRepositionOffsets({1, 1, 1, 1}, {false, false, false, false},
+                               1 /* target_index */, 0 /* padding */);
+  EXPECT_THAT(positions, ElementsAre(top, top + 1, top + 2, top + 3));
+  EXPECT_EQ(4 + insets.height(), fixed_height());
+  EXPECT_EQ(1 + top, reposition_top());
+
+  // Notification above is being deleted. |reposition_top| should remain at the
+  // same offset from the bottom.
+  fixed_height() = 4 + insets.height();
+  reposition_top() = 1 + top;
+  positions =
+      ComputeRepositionOffsets({1, 1, 1, 1}, {true, false, false, false},
+                               1 /* target_index */, 0 /* padding */);
+  EXPECT_THAT(positions, ElementsAre(top, top, top + 1, top + 2));
+  EXPECT_EQ(4 + insets.height() - 1, fixed_height());
+  EXPECT_EQ(1 + top - 1, reposition_top());
+
+  // Notification above is inserted. |reposition_top| should remain at the
+  // same offset from the bottom.
+  fixed_height() = 3 + insets.height();
+  reposition_top() = top;
+  positions =
+      ComputeRepositionOffsets({1, 1, 1, 1}, {false, false, false, false},
+                               1 /* target_index */, 0 /* padding */);
+  EXPECT_THAT(positions, ElementsAre(top, top + 1, top + 2, top + 3));
+  EXPECT_EQ(3 + insets.height() + 1, fixed_height());
+  EXPECT_EQ(top + 1, reposition_top());
+
+  // Target notification grows with no free space. |reposition_top| is forced to
+  // change its offset from the bottom.
+  fixed_height() = 4 + insets.height();
+  reposition_top() = 1 + top;
+  positions =
+      ComputeRepositionOffsets({1, 2, 1, 1}, {false, false, false, false},
+                               1 /* target_index */, 0 /* padding */);
+  EXPECT_THAT(positions, ElementsAre(top, top + 1, top + 3, top + 4));
+  EXPECT_EQ(4 + insets.height() + 1, fixed_height());
+  EXPECT_EQ(1 + top, reposition_top());
+
+  // Target notification grows with free space. |reposition_top| should remain
+  // at the same offset from the bottom.
+  fixed_height() = 5 + insets.height();
+  reposition_top() = 1 + top;
+  positions =
+      ComputeRepositionOffsets({1, 2, 1, 1}, {false, false, false, false},
+                               1 /* target_index */, 0 /* padding */);
+  EXPECT_THAT(positions, ElementsAre(top, top + 1, top + 3, top + 4));
+  EXPECT_EQ(5 + insets.height(), fixed_height());
+  EXPECT_EQ(1 + top, reposition_top());
+
+  // Target notification grows with not enough free space. |reposition_top|
+  // should change its offset as little as possible, and consume the free space.
+  fixed_height() = 5 + insets.height();
+  reposition_top() = 1 + top;
+  positions =
+      ComputeRepositionOffsets({1, 3, 1, 1}, {false, false, false, false},
+                               1 /* target_index */, 0 /* padding */);
+  EXPECT_THAT(positions, ElementsAre(top, top + 1, top + 4, top + 5));
+  EXPECT_EQ(5 + insets.height() + 1, fixed_height());
+  EXPECT_EQ(1 + top, reposition_top());
+
+  // Target notification shrinks. |reposition_top| should remain at the
+  // same offset from the bottom.
+  fixed_height() = 5 + insets.height();
+  reposition_top() = 1 + top;
+  positions =
+      ComputeRepositionOffsets({1, 1, 1, 1}, {false, false, false, false},
+                               1 /* target_index */, 0 /* padding */);
+  EXPECT_THAT(positions, ElementsAre(top, top + 1, top + 2, top + 3));
+  EXPECT_EQ(5 + insets.height(), fixed_height());
+  EXPECT_EQ(1 + top, reposition_top());
+
+  // Notification below grows with no free space. |reposition_top| is forced to
+  // change its offset from the bottom.
+  fixed_height() = 4 + insets.height();
+  reposition_top() = 1 + top;
+  positions =
+      ComputeRepositionOffsets({1, 1, 2, 1}, {false, false, false, false},
+                               1 /* target_index */, 0 /* padding */);
+  EXPECT_THAT(positions, ElementsAre(top, top + 1, top + 2, top + 4));
+  EXPECT_EQ(4 + insets.height() + 1, fixed_height());
+  EXPECT_EQ(1 + top, reposition_top());
+
+  // Notification below grows with free space. |reposition_top| should remain
+  // at the same offset from the bottom.
+  fixed_height() = 5 + insets.height();
+  reposition_top() = 1 + top;
+  positions =
+      ComputeRepositionOffsets({1, 1, 2, 1}, {false, false, false, false},
+                               1 /* target_index */, 0 /* padding */);
+  EXPECT_THAT(positions, ElementsAre(top, top + 1, top + 2, top + 4));
+  EXPECT_EQ(5 + insets.height(), fixed_height());
+  EXPECT_EQ(1 + top, reposition_top());
+
+  // Notification below shrinks. |reposition_top| should remain at the same
+  // offset from the bottom.
+  fixed_height() = 5 + insets.height();
+  reposition_top() = 1 + top;
+  positions =
+      ComputeRepositionOffsets({1, 1, 1, 1}, {false, false, false, false},
+                               1 /* target_index */, 0 /* padding */);
+  EXPECT_THAT(positions, ElementsAre(top, top + 1, top + 2, top + 3));
+  EXPECT_EQ(5 + insets.height(), fixed_height());
+  EXPECT_EQ(1 + top, reposition_top());
+
+  // Notification below is being deleted. |reposition_top| should remain at the
+  // same offset from the bottom.
+  fixed_height() = 4 + insets.height();
+  reposition_top() = 1 + top;
+  positions =
+      ComputeRepositionOffsets({1, 1, 1, 1}, {false, false, true, false},
+                               1 /* target_index */, 0 /* padding */);
+  EXPECT_THAT(positions, ElementsAre(top, top + 1, top + 2, top + 2));
+  EXPECT_EQ(4 + insets.height(), fixed_height());
+  EXPECT_EQ(1 + top, reposition_top());
+
+  // Notification below is inserted with free space. |reposition_top| should
+  // remain at the same offset from the bottom.
+  fixed_height() = 4 + insets.height();
+  reposition_top() = 1 + top;
+  positions =
+      ComputeRepositionOffsets({1, 1, 1, 1}, {false, false, false, false},
+                               1 /* target_index */, 0 /* padding */);
+  EXPECT_THAT(positions, ElementsAre(top, top + 1, top + 2, top + 3));
+  EXPECT_EQ(4 + insets.height(), fixed_height());
+  EXPECT_EQ(1 + top, reposition_top());
+
+  // Notification below is inserted with no free space. |reposition_top| is
+  // forced to change its offset from the bottom.
+  fixed_height() = 3 + insets.height();
+  reposition_top() = 1 + top;
+  positions =
+      ComputeRepositionOffsets({1, 1, 1, 1}, {false, false, false, false},
+                               1 /* target_index */, 0 /* padding */);
+  EXPECT_THAT(positions, ElementsAre(top, top + 1, top + 2, top + 3));
+  EXPECT_EQ(3 + insets.height() + 1, fixed_height());
+  EXPECT_EQ(1 + top, reposition_top());
+
+  // Test padding.
+  fixed_height() = 20 + insets.height();
+  reposition_top() = 5 + top;
+  positions =
+      ComputeRepositionOffsets({5, 3, 3, 3}, {false, false, false, false},
+                               1 /* target_index */, 2 /* padding */);
+  EXPECT_THAT(positions,
+              ElementsAre(top, top + 7, top + 7 + 5, top + 7 + 5 + 5));
+  EXPECT_EQ(20 + insets.height() + 2, fixed_height());
+  EXPECT_EQ(5 + top + 2, reposition_top());
+}
+
 }  // namespace