As it currently stands, side-effects have the highest priority when a key is select()'ed. I just ran into a problem where this behavior was more than disadvantageous:
In my use-case the map keys were not predictable, hence it's almost impossible to prevent a key name collision. IMO maps (and paths) should take precedence over side-effects.
It is still possible to get the nested a key, but I'm pretty sure that the common Gremlin user won't be able to come up with this query: