Updating Behavioral - Visitor to use a union for pseudo-polymorphism