public void visitChildren(final TreeVisitor visitor) {
		final List list = preOrder();

		if (!visitor.reverse()) {
			final ListIterator iter = list.listIterator();

			while (iter.hasNext()) {
				final Block block = (Block) iter.next();
				block.visit(visitor);
			}

		} else {
			final ListIterator iter = list.listIterator(list.size());

			while (iter.hasPrevious()) {
				final Block block = (Block) iter.previous();
				block.visit(visitor);
			}
		}
	}