public E next() {
    if (iters.isEmpty()) {
      return null;
    }
    Iterator<E> it = null;
    E elem = null;

    while (elem == null && !iters.isEmpty()) {
      it = iters.remove(0);
      if (it.hasNext()) {
        elem = it.next();
      }
    }

    if (it != null && it.hasNext()) {
      iters.add(it);
    }

    return elem;
  }