'Breakdown all of item in self into their leaf subaspects.
:return: An AspectList contain ONLY leaf aspects.'

def get_leaf_aspects(self):

    aspects = type(self)()
    for leaf_aspect in itertools.chain.from_iterable([aspect.get_leaf_aspects() for aspect in self]):
        if (leaf_aspect not in aspects):
            aspects.append(leaf_aspect)
    for excluded_aspect in itertools.chain.from_iterable([aspect.get_leaf_aspects() for aspect in self.exclude]):
        try:
            aspects._remove(excluded_aspect)
        except ValueError:
            continue
    return aspects
