'The collection including this mapper and all descendant mappers.
This includes not just the immediately inheriting mappers but
all their inheriting mappers as well.'

@_memoized_configured_property
def self_and_descendants(self):

    descendants = []
    stack = deque([self])
    while stack:
        item = stack.popleft()
        descendants.append(item)
        stack.extend(item._inheriting_mappers)
    return util.WeakSequence(descendants)
