Design, code and test a program that provides a facade to class BinaryTree and its InOrder iterator. This should enforce the "searchness" of trees, which is not ensured by class BinaryTree and consider the possibility of new iterators for a tree, e.g., preorder or postorder iterators.