Event dispatcher used by DynamicEvents and Events macro as an alternative implementation that doesn't require to add a lot of methods on classes with events. This is basically the same code as what is statically generated by Events macro, but made dynamic and usable for any type. This is not really supposed to be used as is as it is pretty low-level.