public static <E> Iterator<List<E>> unchain(int channelSize, Iterable<E> iterable) {
        dbc.precondition(iterable != null, "cannot unchain a null iterable");
        final Supplier<List<E>> channelFactory = Compositions.compose(new Vary<ArrayList<E>, List<E>>(), new ArrayListFactory<E>());
        return new UnchainIterator<List<E>, E>(channelSize, iterable.iterator(), channelFactory);
    }
public static < E > Iterator < List < E > > unchain ( int channelSize , Iterable < E > iterable ) { dbc . precondition ( iterable != null , "cannot unchain a null iterable" ) ; final Supplier < List < E > > channelFactory = Compositions . compose ( new Vary < ArrayList < E > , List < E > > ( ) , new ArrayListFactory < E > ( ) ) ; return new UnchainIterator < List < E > , E > ( channelSize , iterable . iterator ( ) , channelFactory ) ; }
Demultiplexes elements from the source iterable into an iterator of channels.
<code>
unchain(2, [1,2,3,4,5]) -> [[1,2],[3,4],[5]]
</code>

@param <E> the element type
@param channelSize maximum size of the channel
@param iterable the source iterable
@return an iterator of channels