for example:
sealed abstract class TermType
case class TermTypeSimple(name: String) extends TermType
case class TermTypeWithParen(name: String, parent: TermType) extends TermType
Other way:
case class TermType(name: String, superType: Option[TermType] = None)
With usages:
TermType("Hi")
TermType("Buy", Some(TermType("Beer"))