Definition of an event. Event is used as a key so both hashCode and equals need to be implemented properly. Inheriting of this class is an experimental feature. Instantiate directly if inheritance not necessary.
T - specifies what is a type of a value passed to the event