A Ruby implementation of the visitor pattern, must be invited in.