Adding HasDomainEvent interface functionality, eg, registering, clearing for Aggregates, it's kinda like this :
public interface HasDomainEvents<T extends AggregateRoot<T,?>>
{
void registerEvent(DomainEvent event);
Collection<DomainEvent> DomainEvents();
void ClearDomainEvents();
}
Adding HasDomainEvent interface functionality, eg, registering, clearing for Aggregates, it's kinda like this :