ModelTC
@implicitNotFound("Cannot find domain model definition for State: ${State}, Event: ${Event}, Rejection: ${Rejection}") @implicitAmbiguous("Domain model definition must be unique!")
A type class that captures domain model
note that due to uniqueness requirements for this typeclass, it is sealed and the only way to create an instance is through implementing DomainModel.
so don't create several instances as it is a bad idea and may change your domain model behavior in different contexts!
class Object
trait Matchable
class Any