@Override
	@SuppressWarnings("unchecked")
	public T next() {
		if (hasNext()) {
			if (mIterator == null) {
				Row row = mList.get(mIndex++);

				if (row.hasChildren()) {
					mIterator = new RowIterator<>(row.getChildren());
				}
				return (T) row;
			}
			return mIterator.next();
		}
		throw new NoSuchElementException();
	}