def METHOD_NAME(self, _request, _reply):
    _parameters, _attributes = aetools.unpackevent(_request)
    _class = _attributes['evcl'].type
    _type = _attributes['evid'].type
    if (_class, _type) in self.ae_handlers:
        _function = self.ae_handlers[(_class, _type)]
    elif (_class, '****') in self.ae_handlers:
        _function = self.ae_handlers[(_class, '****')]
    elif ('****', '****') in self.ae_handlers:
        _function = self.ae_handlers[('****', '****')]
    else:
        raise 'Cannot happen: AE callback without handler', (_class, _type)
    # XXXX Do key-to-name mapping here
    _parameters['_attributes'] = _attributes
    _parameters['_class'] = _class
    _parameters['_type'] = _type
    if '----' in _parameters:
        _object = _parameters['----']
        del _parameters['----']
        # The try/except that used to be here can mask programmer errors.
        # Let the program crash, the programmer can always add a **args
        # to the formal parameter list.
        rv = _function(_object, **_parameters)
    else:
        #Same try/except comment as above
        rv = _function(**_parameters)
    if rv is None:
        aetools.packevent(_reply, {})
    else:
        aetools.packevent(_reply, {'----':rv})