* can the shadownode ever be nullptr unless the constructor argument was nullptr? 
* from the "user" POV, maybe make the constructor private and the node/shadownode a friend. From this code I'd have expected to call Hint(Node->shadowNode()) but the intended usage is Node->hint()