Double dispatch pattern. No dependence on parse tool.