class DescribedCollection implements Iterable<T> {

    public List<T> itemsList() {
        if (List.class.isAssignableFrom(items.getClass())) {
            return Collections.unmodifiableList((List<T>) items);
        }
        throw new IllegalStateException("Tried to get a non-list collection as list!");
    }

    public  DescribedCollection(RepositoryName source, Collection<T> items);
    public  DescribedCollection(RepositoryName source, T... items);

}