Interfaces

Polymorphism

Generics

Generic classes and interfaces

Type bounds

ADTs