public class Client { // Compiled against Shape v1, where the only permitted subtypes are Circle and Square. public static double area(Shape s) { return switch (s) { case Circle c -> Math.PI * c.r() * c.r(); case Square q -> q.side() * q.side(); }; } public static void main(String[] args) { System.out.println("circle: " + area(new Circle(1))); System.out.println("square: " + area(new Square(2))); } }