A Composite/Visitor pattern for expression processing