design pattern visitor 9900114