IMouseHandler receives mouse events.
IMouseEvents sends mouse events.
Imagine you have an object, which supports IMouseHandler. It has a property DefaultMouseHandler - a reference to another such object.
If DefaultMouseHandler in our object is unequal to null, all calls to OnMouseX on this object will be redirected to its DefaultMouseHandler.
If DefaultMouseHandler == null || DefaultMouseHandler == this, no redirection is carried out (or else we'd have a NullReferenceException or an endless loop of DefaultMouseHandler redirecting calls to itself).