private void sequentialTraverse(FineNode<T> curr, Operation<T> operation) {
		if (curr != null && curr == root && curr.getLeft() == null && curr.getRight() == null) {
			operation.empty(curr);
			return;
		}
		if (curr == null || curr.getValue() == null) {
			return;
		}
		operation.start(curr);
		sequentialTraverse(curr.getLeft(), operation);
		operation.middle(curr);
		sequentialTraverse(curr.getRight(), operation);
		operation.end(curr);
	}