Details
Description
Right now, Scoping#getScopeKeys return Set<String> to return all keys used in scoping.
Depending on each Step's implementation, this loses the information of the order of keys. For example, SelectStep stores keys as HashSet
When GraphProvider implements their own optimization for SelectStep, naturally they want to access this keys, but let's say when a query has select('a', 'b'), the GraphProvider can only know there are keys 'a' and 'b' and cannot see which comes first because it returns as HashSet.
This blocks them from performing their own by-traversal for each key, because applying by-traversals is done in round-robin manner and the order is critical information to process.
For now, I am adding a getter of the list for a provider.