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?").
});
  it('does not warns for arrays of elements with keys', () => {
    const Component = React.createFactory(ComponentClass);
    Component(null, [Component({key: '#1'}), Component({key: '#2'})]);
  });
  it('does not warns for iterable elements with keys', () => {
    const Component = React.createFactory(ComponentClass);
    const iterable = {
      '@@iterator': function() {
        let i = 0;
        return {
          next: function() {
            const done = ++i > 2;
            return {
              value: done ? undefined : Component({key: '#' + i}),
              done: done,
            };
          },
        };
      },
    };
    Component(null, iterable);
  });
  it('does not warn when the element is directly in rest args', () => {
    const Component = React.createFactory(ComponentClass);
    Component(null, Component(), Component());
  });
  it('does not warn when the array contains a non-element', () => {
    const Component = React.createFactory(ComponentClass);
    Component(null, [{}, {}]);