There is a bug in the logic for determining if `props` is a plain object. This bug results in a false positive, flooding the console with hundreds of instances of this warning: "Expected props argument to be a plain object. Properties defined in its prototype chain will be ignored.".

The code that's failing is in [ReactElement.js, Line 210 in the v15.3.1 branch](https://github.com/facebook/react/blob/v15.3.1/src/isomorphic/classic/element/ReactElement.js#L210) (line number is probably different in master)

> config.**proto** == null || config.**proto** === Object.prototype,

This fails when the props object is created in one iframe, but uses an instance of React from another frame. Each browser window/tab/frame has it's own instance of the Object constructor. For instance, `document.querySelector('iframe').contentWindow.Object === Object` always results in `false`.

Check out this [demo](https://jsfiddle.net/05ugxo5f/4/), which shows the false-positive warning message.

* See https://facebook.github.io/react/docs/top-level-api.html#react.cloneelement
 */
ReactElement.cloneElement = function(element, config, children) {
  var propName;
  
  var props = Object.assign({}, element.props);
  
  var key = element.key;
  var ref = element.ref;
  
  var self = element._self;
  
  
  
  var source = element._source;
  
  var owner = element._owner;
  if (config != null) {
    if (__DEV__) {
      warning(
        
        config.__proto__ == null || config.__proto__ === Object.prototype,
        
        'React.cloneElement(...): Expected props argument to be a plain object. ' +
        'Properties defined in its prototype chain will be ignored.'
      );
    }
    if (hasValidRef(config)) {
      
      ref = config.ref;