class ComponentItems implements Iterable<I> {

    @Override
    public Iterator<I> iterator() {
        return stream(delegate.spliterator(), false)
                .filter(item -> item.belongsToComponent(component))
                .filter(item -> item.belongsToContext(context))
                .iterator();
    }

    public  ComponentItems(String component, String context, Iterable<I> delegate);

}