'A higher-order function that traverses the block structure
using topological sort and removes all blocks satisfying the given
removal_condition.
Arguments:
removal_condition ((usage_key)->bool) - A function that
takes a block\'s usage key as input and returns whether
or not to remove that block from the block structure.
keep_descendants (bool) - See the description in
remove_block.'

def remove_block_traversal(self, removal_condition, keep_descendants=False):

    self.filter_topological_traversal(filter_func=self.create_removal_filter(removal_condition, keep_descendants))
