'Filter out blacklist from the children field in fields. Will construct a new list for children;
so, no need to worry about copying the children field, but it will modify fiels.'

@contract(blacklist='list(BlockKey)    |    str')
def _filter_blacklist(self, fields, blacklist):

    if (blacklist == EXCLUDE_ALL):
        fields['children'] = []
    else:
        fields['children'] = [child for child in fields.get('children', []) if (BlockKey(*child) not in blacklist)]
    return fields
