We missed this because Flow wasn't being run properly on Travis but now that it is, it's clear that #7716 introduced a bunch of new Flow failures. Most of these shouldn't be too bad and I like to say "you break it you buy it" so this one is for you @Aweary :)

There were a couple other pre-existing Flow issues that @vjeux is going to fix, so mostly this should just be the TestRenderer issues.

* @param {ReactComponent} child Child to remove.
   * @protected
   */
  removeChild: function(child) {
    child._mountImage.eject();
    child._mountImage = null;
  },
  updateChildrenAtRoot: function(nextChildren, transaction) {
    this.updateChildren(nextChildren, transaction, emptyObject);
  },
  mountAndInjectChildrenAtRoot: function(children, transaction) {
    this.mountAndInjectChildren(children, transaction, emptyObject);
  },
  /**
   * Override to bypass batch updating because it is not necessary.
   *
   * @param {?object} nextChildren.
   * @param {ReactReconcileTransaction} transaction
   * @internal
   * @override {ReactMultiChild.updateChildren}
   */
  updateChildren: function(nextChildren, transaction, context) {
    this._updateChildren(nextChildren, transaction, context);
  },
  
  mountAndInjectChildren: function(children, transaction, context) {
    const mountedImages = this.mountChildren(
      children,
      transaction,
      context