In doing some work with the FIQL parser, I needed to generate a different output than SQL. By using a visitor pattern for rendering the SQL, any visitor can be applied to the SearchCondition object graph.
The attached patch provides that refactoring.
As a part of that, SearchCondition.toSql() is deprecated, but I maintained the interface for maximum compatibility.
There was also a change to SearchCondition.getSearchConditions(). There were no callers to that code except test code, and it was set up to return null if there was only one condition. That wasn't clear to me, hopefully that change is not unreasonable.
This may not be formatted properly, please adjust to suit.