Here's the visitor pattern + little language stuff with intelliJ project