@@ -0,0 +1,945 @@
+class Wheel implements CarElement %7B%0A     private String name;%0A %0A     public Wheel(String name) %7B%0A         this.name = name;%0A     %7D%0A %0A     public String getName() %7B%0A         return this.name;%0A     %7D%0A %0A %0Apublic void accept(CarElementVisitor visitor) %7B%0A         /*%0A          * accept(CarElementVisitor) in Wheel implements%0A         * accept(CarElementVisitor) in CarElement, so the call%0A          * to accept is bound at run time. This can be considered%0A          * the first dispatch. However, the decision to call%0A          * visit(Wheel) (as opposed to visit(Engine) etc.) can be%0A          * made during compile time since 'this' is known at compile%0A          * time to be a Wheel. Moreover, each implementation of%0A          * CarElementVisitor implements the visit(Wheel), which is%0A          * another decision that is made at run time. This can be%0A          * considered the second dispatch.%0A          */%0A %0A        visitor.visit(this);%0A     %7D%0A

Create Wheel.java