The choice of constructors is a bit wild. What system do they follow?

I would suggest to have the following set of constructors:

  - `CollectionDataSource(Object ... elements)`  // this also matches the Object[]
  - `CollectionDataSource(String name, Object ... elements)`  // this also matches the Object[]

  - `CollectionDataSource(Object[][] ... objs)`
  - `CollectionDataSource(String name, Object[][] ... objs)`

  - `CollectionDataSource(Collection<?> objs)`
  - `CollectionDataSource(String name, Collection<?> ... objs)`

  - `<T extends Iterator<?>, Serializable> CollectionDataSource(T iterator)`
  - `<T extends Iterator<?>, Serializable> CollectionDataSource(String name, T iterator)`