docs: public static <K> List<K> zip(Collection<Deque<K>> stuff)
      {
          final List<K> result = Lists.newArrayList();
  
          // merge the results
          Iterator<Deque<K>> iter = stuff.iterator();
          while (iter.hasNext()) {
              final K next = iter.next().poll();
              if (next != null) {
                  result.add(next);
              } else {
                  iter.remove();
              }
  
              if (!iter.hasNext()) {
                  iter = stuff.iterator();
              }
          }
  
          return result;
      }