'A higher-order function that traverses the block structure
using topological sort and applies the given filter.
Arguments:
filter_func ((usage_key)->bool) - Function that returns
whether or not to yield the given block key.
If None, the True function is assumed.
kwargs (dict) - Optional keyword arguments to be forwarded
to topological_traversal.'

def filter_topological_traversal(self, filter_func, **kwargs):

    for _ in self.topological_traversal(filter_func=filter_func, **kwargs):
        pass
