Remove unnecessary intermediate variable.
Add TODO; pre-order remove() does not fail atomically.

If the underlying Iterator.remove() throws an exception, the traversal
will still have skipped the subtree.
Test remove() for leaves traversal.
Rename some test methods to be more accurate.
Use helper methods to assert that an iterator is empty.
Improve formatting.
Rework leafElements() tests, and add a few new simple tests.
Add some tests for elements().

More tests need to be added to distinguish elements() behavior from
leafElements().
More tests for elements() and leafElements()
Remove cobertura config item which is using the default value.
Add a NoCoverage method/constructor annotation.

This is so that we can configure cobertura to ignore specific methods when
calculating code coverage.
Configure cobertura to ignore methods annotated with NoCoverage.
Ignore code coverage for constructors of classes with only static utility methods.
Add a test to exhaust a root-node traversal iterator.
Forgot to check that the data was unchanged after pruning the root.
Implement breadth-first remove() and prune().

The implementation will be replaced soon, but this gets the unit tests
committed so that a regression doesn't happen when this is refactored.
Refactor breadth-first to avoid using queue.removeTail().

The traversal now keeps track of the next move to become the queue's tail,
but does not put it there until necessary. Instead of removing the queue's
tail upon remove() or prune(), the pending move is simply discarded.
Make pre-order remove() fail atomically.
Explicit type arguments are now unnecessary.