adt source.scala ADT