def calculate_event_handler_snapshot_difference(client, snapshot_old, snapshot_new):
    """
    Calculates the difference between two event handler snapshot returning the difference.
    
    Parameters
    ----------
    client : ``Client``
        The respective client instance.
    snapshot_old : `dict` of (`str`, `list` of `async-callable`) items
        An old snapshot taken.
    snapshot_new : `dict` of (`str`, `list` of `async-callable`) items
        A new snapshot.
    
    Returns
    -------
    snapshot_difference : `None` or `list` of `tuple` \
            (`str`, (`None` or `list` of `async-callable`), (`None` or `list` of `async-callable`))
        A list of event handler differences in a list of tuples.
        
        The tuple has 3 elements, where the 0th element is the name of the respective event, meanwhile the 1th element
        contains the removed event handlers and the 2th the added ones.
        
        If there is no difference between two snapshots, returns `None`.
    """
    snapshot_difference = []
    
    event_names = {*snapshot_old.keys(), *snapshot_new.keys()}
    
    for event_name in event_names:
        old_handlers = snapshot_old.get(event_name, None)
        new_handlers = snapshot_new.get(event_name, None)
        
        if (old_handlers is not None) and (new_handlers is not None):
            for index in reversed(range(len(old_handlers))):
                handler = old_handlers[index]
                try:
                    new_handlers.remove(handler)
                except ValueError:
                    pass
                else:
                    del old_handlers[index]
            
            if not new_handlers:
                new_handlers = None
            
            if not old_handlers:
                old_handlers = None
        
        if (old_handlers is not None) or (new_handlers is not None):
            snapshot_difference.append((event_name, old_handlers, new_handlers))
    
    if not snapshot_difference:
        snapshot_difference = None
    
    return snapshot_difference