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.
);
  }
  if (__DEV__) {
    warning(
      typeof instance.mountComponent === 'function' &&
      typeof instance.receiveComponent === 'function' &&
      typeof instance.getHostNode === 'function' &&
      typeof instance.unmountComponent === 'function',
      'Only React Components can be mounted.'
    );
  }
  
  
  
  instance._mountIndex = 0;
  instance._mountImage = null;
  if (__DEV__) {
    instance._debugID = shouldHaveDebugID ? getNextDebugID() : 0;
  }
  
  
  if (__DEV__) {
    if (Object.preventExtensions) {
      Object.preventExtensions(instance);
    }
  }
  return instance;
}
module.exports = instantiateReactComponent;