'The given block structure is transformed by each transformer in the
collection. Tranformers with filters are combined and run first in a
single course tree traversal, then remaining transformers are run in
the order that they were added.'

def transform(self, block_structure):

    self._transform_with_filters(block_structure)
    self._transform_without_filters(block_structure)
    block_structure._prune_unreachable()
