Maybe the horse train has left the station barn door open already, but...

This code "aims way low" in a few respects: 

It ignores the fact that TVE and AbstractExpression in general implement equals (and even hashCode) (pretty heavily relied upon in other code, I think) so all the proxy-equality-by-name here is artificially flavored weak sauce.

So, it goes out of its way to punt -- for no really good reason, given that AbstractExpression.equals is implemented -- on supporting exact matches between non-TVE expressions in the ORDER BY and INDEX lists.

Actually, to cover expressions of columns and constants -- JSON anyone? -- "equals" would not actually be the right check but rather bindingToIndexedExpression so that a unique index on "FIELD(col, "TAX_ID")" would provide determinism coverage for "order by FIELD(col, ?)" when that really means "order by "FIELD(col, "TAX_ID")" -- but not when it really means "order by FIELD(col, "LAST_NAME)", or literally "order by FIELD(col, ?)".

Maybe this isn't a show-stopper for this change that it works in simple cases -- it's SO 2012 -- but there should at least be a //FIXME comment and the JIRA ticket should be left open or linked to an open follow-on ticket with these details added.