def METHOD_NAME(self):
    results = []
    todo = list(providedBy(self.context))
    done = []
    while todo:
        interface = todo.pop()
        done.append(interface)
        for base in interface.__bases__:
            if base not in todo and base not in done:
                todo.append(base)
        markers = self._getDirectMarkersOf(interface)
        for interface in markers:
            if interface not in results and \
               not interface.providedBy(self.context):
                results.append(interface)
        todo += markers
    return tuple(results)