connectRoot(newRoot) {
    for (const root of this.roots) {
      if (
        root === newRoot ||
        root.contains(newRoot) ||
        newRoot.contains(root)
      ) {
        throw new Error("Cannot add a root that overlaps with existing root.");
      }
    }

    if (this.windowElement) {
      if (this.windowElement !== newRoot.ownerDocument.defaultView) {
        throw new Error(`Cannot connect a root:
          DOMLocalization already has a root from a different window.`);
      }
    } else {
      this.windowElement = newRoot.ownerDocument.defaultView;
      this.mutationObserver = new this.windowElement.MutationObserver(
        mutations => this.translateMutations(mutations)
      );
    }

    this.roots.add(newRoot);
    this.mutationObserver.observe(newRoot, this.observerConfig);
  }
Add `newRoot` to the list of roots managed by this `DOMLocalization`.

Additionally, if this `DOMLocalization` has an observer, start observing
`newRoot` in order to translate mutations in it.

@param {Element}      newRoot - Root to observe.