docs: function(nextElement, container, callback) {
      ("production" !== process.env.NODE_ENV ? invariant(
        ReactElement.isValidElement(nextElement),
        'React.render(): Invalid component element.%s',
        (
          typeof nextElement === 'string' ?
            ' Instead of passing an element string, make sure to instantiate ' +
            'it by passing it to React.createElement.' :
          typeof nextElement === 'function' ?
            ' Instead of passing a component class, make sure to instantiate ' +
            'it by passing it to React.createElement.' :
          // Check if it quacks like an element
          nextElement != null && nextElement.props !== undefined ?
            ' This may be caused by unintentionally loading two independent ' +
            'copies of React.' :
            ''
        )
      ) : invariant(ReactElement.isValidElement(nextElement)));
  
      var prevComponent = instancesByReactRootID[getReactRootID(container)];
  
      if (prevComponent) {
        var prevElement = prevComponent._currentElement;
        if (shouldUpdateReactComponent(prevElement, nextElement)) {
          return ReactMount._updateRootComponent(
            prevComponent,
            nextElement,
            container,
            callback
          ).getPublicInstance();
        } else {
          ReactMount.unmountComponentAtNode(container);
        }
      }
  
      var reactRootElement = getReactRootElementInContainer(container);
      var containerHasReactMarkup =
        reactRootElement && ReactMount.isRenderedByReact(reactRootElement);
  
      if ("production" !== process.env.NODE_ENV) {
        if (!containerHasReactMarkup || reactRootElement.nextSibling) {
          var rootElementSibling = reactRootElement;
          while (rootElementSibling) {
            if (ReactMount.isRenderedByReact(rootElementSibling)) {
              ("production" !== process.env.NODE_ENV ? warning(
                false,
                'render(): Target node has markup rendered by React, but there ' +
                'are unrelated nodes as well. This is most commonly caused by ' +
                'white-space inserted around server-rendered markup.'
              ) : null);
              break;
            }
  
            rootElementSibling = rootElementSibling.nextSibling;
          }
        }
      }
  
      var shouldReuseMarkup = containerHasReactMarkup && !prevComponent;
  
      var component = ReactMount._renderNewRootComponent(
        nextElement,
        container,
        shouldReuseMarkup
      ).getPublicInstance();
      if (callback) {
        callback.call(component);
      }
      return component;
    }