ADT in Java 17 presentation Start Enumeration Abstract class Algebraic Data Types Going further Other example