public abstract void Accept(ShapeVisitor visitor);
public override void Accept(ShapeVisitor visitor) { visitor.VisitCompositeShape(this); }
public override void Accept(ShapeVisitor visitor) { visitor.VisitRectangle(this); }
public override void Accept(ShapeVisitor visitor) { visitor.VisitCircle(this); }