public Tree<T> next() {
		if (!hasNext())
			throw new NoSuchElementException("no more nodes!");
		Tree<T> result = queue.removeFirst();
		final List<Tree<T>> children = result.getChildren();
		if (children != null)
			queue.addAll(0, children);
		lastNode = result;
		return result;
	}