function shouldUpdateReactComponent(prevComponentInstance, nextDescriptor) {
  // TODO: Remove warning after a release.
  if (prevComponentInstance && nextDescriptor &&
      prevComponentInstance.constructor === nextDescriptor.constructor && (
        (prevComponentInstance.props && prevComponentInstance.props.key) ===
        (nextDescriptor.props && nextDescriptor.props.key)
      )) {
    if (prevComponentInstance._owner === nextDescriptor._owner) {
      return true;
    } else {
      if ("production" !== "development") {
        if (prevComponentInstance.state) {
          console.warn(
            'A recent change to React has been found to impact your code. ' +
            'A mounted component will now be unmounted and replaced by a ' +
            'component (of the same class) if their owners are different. ' +
            'Previously, ownership was not considered when updating.',
            prevComponentInstance,
            nextDescriptor
          );
        }
      }
    }
  }
  return false;
}
Given a `prevComponentInstance` and `nextComponent`, determines if
`prevComponentInstance` should be updated as opposed to being destroyed or
replaced by a new instance. The second argument is a descriptor. Future
versions of the reconciler should only compare descriptors to other
descriptors.

@param {?object} prevComponentInstance
@param {?object} nextDescriptor
@return {boolean} True if `prevComponentInstance` should be updated.
@protected