SMS dit: The VISITOR Pattern as a Reusable, Generic, Type-Safe Component