Implement ObjectKey as GenericFunctor
make ObjectKey a GenericFunctor, which avoids unconditional dereferencing of pointers, but which does change the return type in case a pointer is passed from int to Optional<int>, so that a nullptr argument can be represented downstream by an 'empty' Optional.
(see the discussion here as to why this is the right thing to do)
Note: DaVinci!1379 adapts a unit test accordingly
Edited by Gerhard Raven