@staticmethod
def match_field(node_ancestry_record, field_ancestry_criteria):
    """
        Check whether an outline node (field node) from within a data node sub-tree matches the criteria
        for a specific field specifier.

        Goes through ancestry of node and tests each generation against the corresponding criteria

        :param node_ancestry_record:
        :param field_ancestry_criteria:
        :return:
        """
    if node_ancestry_record.depth != len(field_ancestry_criteria) - 1:
        return False
    else:
        match = True
        paired_gen_and_criteria = zip(node_ancestry_record,
            field_ancestry_criteria)
        for pair in paired_gen_and_criteria:
            generation, gen_criteria = pair
            if not gen_criteria.matches_criteria(generation):
                match = False
    return match
