Github user robertdale commented on the issue:
This is interesting. I was unaware of some or didn't understand some implementation details. Taking a step back and looking at this again, I wonder if the original intent is more correct. Sorry @JPMoresmau
We have to ask what is the purpose of `Hidden`? And what is the purpose of `T..getAccessor()`? Looks like `Has` step internally use `T..getAccessor()` for equality tests. Is this more of an internal method or should it be exposed?
Ultimately, the question is with what or how do we expect to access `T` tokens in a value map?
Given: `map = g.V().valueMap(true).next()`
Access by: `map.get(T.id)` *or* `map.get(T.id.getAccessor())`?
If the answer is `T.id` then the interface must be <Object,Object>
If the answer is `T.id.getAccessor()` then the interface must be <String,Object>
In either case, there is no conflict between system-level `T` tokens (e.g. `T.id`), as these are either Enum or `Hidden`, and user-level strings (e.g. `id`).