Added support for the visitor design pattern