code: public static <C extends Collection<E>, E> Iterator<C> unchain(int channelSize, Iterable<E> iterable, Supplier<C> channelProvider) {
          dbc.precondition(iterable != null, "cannot unchain a null iterable");
          return new UnchainIterator<C, E>(channelSize, iterable.iterator(), channelProvider);
      }
docs: 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 <C> the channel collection type
  @param <E> the element type
  @param channelSize maximum size of the channel
  @param iterable the source iterable
  @param channelProvider the supplier used to create channels
  @return an iterator of channels