Roles are a powerful way for designing complex behaviours while keeping good practices such as Single Responsibility, Dependency Inversion and Interface Segregation.
Javadoc
TBD