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.
invariant(
        false,
        'Element type is invalid: expected a string (for built-in components) ' +
        'or a class/function (for composite components) but got: %s.%s',
        type == null ? type : typeof type,
        info,
      );
    }
    
    if (typeof element.type === 'string') {
      instance = ReactHostComponent.createInternalComponent(element);
    } else if (isInternalComponentType(element.type)) {
      
      
      
      instance = new element.type(element);
      
      if (!instance.getHostNode) {
        instance.getHostNode = instance.getNativeNode;
      }
    } else {
      instance = new ReactCompositeComponentWrapper(element);
    }
  } else if (typeof node === 'string' || typeof node === 'number') {
    instance = ReactHostComponent.createInstanceForText(node);
  } else {
    invariant(
      false,
      'Encountered invalid React node of type %s',
      typeof node