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.
Parameters
T - specifies what is a type of a value passed to the event