'Ensure dest_children == source_children minus unexpected'

@contract(source_children='list(BlockUsageLocator)', dest_children='list(BlockUsageLocator)', unexpected='list(BlockKey)')
def _compare_children(self, source_children, dest_children, unexpected):

    source_block_keys = [src_key for src_key in (BlockKey.from_usage_key(src) for src in source_children) if (src_key not in unexpected)]
    dest_block_keys = [BlockKey.from_usage_key(dest) for dest in dest_children]
    for unexp in unexpected:
        self.assertNotIn(unexp, dest_block_keys)
    self.assertEqual(source_block_keys, dest_block_keys)
