I wouldn't call a function that mutates the input "safe navigation", personally :)
Er, it doesn't? `.get()` (or `[]` in the original) doesn't change the object, and `obj =` only changes which object the local variable refers to?
This isn't like C++ with its intrusive `=`.
But I really don't like having this much `Any`; it's generally a sign of poor design.