Tow dispatchs take place at the following places:
1. Invoke of Element.accept : overide of accept
2. Inplemention of Element.accept : overload of visit.
the core concept of double dispatch is the accept Method.
The first dispatch takes place at run time, which is override just right. accept method needs only one signature.
the second dispatch takes place at compile time, which is overload just right. visit method nees multiple signature.