In most circumstances where TreeBinary is constructed, the MemoryHandler which populates it is constructed especially for this purpose, and so it is unnecessary overhead for TreeBinary::TreeBinary or TreeBinary::SetData to perform a Clone operation on the MemoryHandler parameter they receive. They should just acquire the pointer and take responsibility for deletion.
In most circumstances where TreeBinary is constructed, the MemoryHandler which populates it is constructed especially for this purpose, and so it is unnecessary overhead for TreeBinary::TreeBinary or TreeBinary::SetData to perform a Clone operation on the MemoryHandler parameter they receive. They should just acquire the pointer and take responsibility for deletion.