def lookupProcedure(self, procedurePath):
        if procedurePath.find(self.separator) != -1:
            prefix, procedurePath = procedurePath.split(self.separator, 1)
            handler = self.getSubHandler(prefix)
            if handler is None:
                raise NoSuchFunction(self.NOT_FOUND,
                    "no such subHandler %s" % prefix)
            return handler.lookupProcedure(procedurePath)

        f = getattr(self, "xmlrpc_%s" % procedurePath, None)
        if not f:
            raise NoSuchFunction(self.NOT_FOUND,
                "procedure %s not found" % procedurePath)
        elif not callable(f):
            raise NoSuchFunction(self.NOT_FOUND,
                "procedure %s not callable" % procedurePath)
        else:
            return f
Test for firing if both filters are a non match.
dataset/ETHPy150Open twisted/twisted/twisted/web/xmlrpc.py/XMLRPC.lookupProcedure--crossover with--dataset/ETHPy150Open home-assistant/home-assistant/tests/components/automation/test_state.py/TestAutomationState.test_if_fires_on_entity_change_with_both_filters