I found this article very useful to design the S4 fluent API and define the DSL rules:
http://java.dzone.com/articles/java-fluent-api-designer-crash It points to a couple of projects: JRTF uses classes to implement the DSL http://code.google.com/p/jrtf/ jOOQ uses interfaces to implement the DSL http://www.jooq.org/ Using interfaces gives more flexibility to reuse keywords in different contexts but using classes seems more compact and makes it possible to use static import. I think I will use classes and avoid reusing method names in different contexts. See Jira S4-5: http://goo.gl/frbSg -- Leo Neumeyer (@leoneu)
