This:

```js
createElement(<div />)
```

doesn't currently give a distinguishable message.

https://stackoverflow.com/questions/51110436/wrapping-provider-in-same-component-throws-element-type-is-invalid-expected-a-s

But we can easily detect it by checking for `$$typeof` and in that case suggest something more concrete (e.g. "Did you accidentally export JSX instead of a component?").
return React.createElement('span', null, this.props.prop);
      }
    }
    expect(() => {
      ReactTestUtils.renderIntoDocument(
        React.createElement(MisspelledPropTypesComponent, {prop: 'Hi'}),
      );
    }).toWarnDev(
      'Warning: Component MisspelledPropTypesComponent declared `PropTypes` ' +
        'instead of `propTypes`. Did you misspell the property assignment?',
      {withoutStack: true},
    );
  });
  it('should warn when accessing .type on an element factory', () => {
    function TestComponent() {
      return <div />;
    }
    let TestFactory = React.createFactory(TestComponent);
    expect(() => TestFactory.type).toLowPriorityWarnDev(
      'Warning: Factory.type is deprecated. Access the class directly before ' +
        'passing it to createFactory.',
      {withoutStack: true},
    );
    
    expect(TestFactory.type).toBe(TestComponent);
  });
  it('does not warn when using DOM node as children', () => {
    class DOMContainer extends React.Component {