ADTs in Scala 2 and Scala 3