When consuming React from source with the Google Closure Compiler, [this bit](https://github.com/facebook/react/blob/eca5b1d48e71218800156ce474ec79b990b09fbd/src/renderers/shared/stack/reconciler/instantiateReactComponent.js#L26-L32) of code isn't being run in the correct order.

It seems like the Google Closure Compiler transformation is changing the function to a `var` assignment. It messes up the behavior because the original `instantiateReactComponent` function is hoisted. My thought is it's related to the fact that the `instantiateReactComponent` function is exported from that module. 

Anyway, this produces an error because the assignment to `ReactCompositeComponentWrapper.prototype` is now in the wrong order (assignment -> function definition, when we want definition -> assignment).

This may also be related or the root cause of #8887.

The most straightforward solution is to bring the `Object.assign` call after the function is declared, which I've verified works correctly. I'm happy to submit a PR with the described approach.
return (
    typeof type === 'function' &&
    typeof type.prototype !== 'undefined' &&
    typeof type.prototype.mountComponent === 'function' &&
    typeof type.prototype.receiveComponent === 'function'
  );
}
/**
 * Given a ReactNode, create an instance that will actually be mounted.
 *
 * @param {ReactNode} node
 * @param {boolean} shouldHaveDebugID
 * @return {object} A new instance of the element's constructor.
 * @protected
 */
function instantiateReactComponent(node, shouldHaveDebugID) {