Sometimes, we need to create wrapper types.
types like unique_ptr, shared_ptr, optional and similar.
these types have an accessor member function called .get
but they also provide the operator-> to support
direct access to the contained value
similarly to what ordinary pointers do.
The problem is that sometimes we have a few of these types
nested into each other.
This means that we need to call .get multiple...