@Override
    public T next() {
        T temp = iterator.next();
        boolean removed = false;
        if (!iterator.hasNext()) {
            iterators.remove(index);
            removed = true;
        }
        if (index >= iterators.size() - 1) {
            if (iterators.size() > 0) {
                index = 0;
                iterator = iterators.get(index);
            }
        } else {
            if (!removed)
                index += 1;
            iterator = iterators.get(index);
        }
        return temp;
    }