public static void Main(string[] args)
    {
        var sphere    = new Sphere(10);
        var cylinder  = new Cylinder(10, 10);
        var composite = new CompositeShape(new List <Shape3d> {
            cylinder, sphere
        });

        Console.WriteLine(composite.SurfaceArea());
        Console.WriteLine(composite.Volume());

        var sv = new SubsumedVisitor();

        sv.Render(new OpenGL(), composite);
        sv.Render(new SVG(), composite);
    }