managed to implement a very general double-dispatch Visitor pattern!
we can have one declaration only for standard visitor having a Domain
argument
rather than one declaration for each subclass, at the price of having
to downcast such argument inside each concrete visitor implementation..
but this no longer a visitor pattern!