This Design Pattern stems from
[DP95],
pp. 331. There the pattern is described as:
"Represents an operation to be performed on the elements of an
object structure. Visitor lets you define a new operation without
changing the classes of the elements on which it operates.
"