Understanding the visitor pattern