'Find all structures that originated from ``original_version`` that contain ``block_key``.
Any structure found in the cache will be preferred to a structure with the same id from the database.
Arguments:
original_version (str or ObjectID): The id of a structure
block_key (BlockKey): The id of the block in question'

def find_ancestor_structures(self, original_version, block_key):

    found_structure_ids = set()
    structures = []
    for (_, record) in self._active_records:
        for structure in record.structures.values():
            if ('original_version' not in structure):
                continue
            if (structure['original_version'] != original_version):
                continue
            if (block_key not in structure.get('blocks', {})):
                continue
            if ('update_version' not in structure['blocks'][block_key].get('edit_info', {})):
                continue
            structures.append(structure)
            found_structure_ids.add(structure['_id'])
    structures.extend((structure for structure in self.db_connection.find_ancestor_structures(original_version, block_key) if (structure['_id'] not in found_structure_ids)))
    return structures
