def METHOD_NAME(
    variant_table: VariantTable, parent: str, co_parent: str, phasing_param
):
    # determine phasable variants
    if phasing_param.complexity_support == 0:
        allowed_pairs = [(1, 0)]
    elif phasing_param.complexity_support == 1:
        allowed_pairs = [(1, 0), (1, 1)]
    else:
        allowed_pairs = [(1, 0), (2, 0), (1, 1)]
    varinfo = VariantInfo(allowed_pairs)
    gts1 = variant_table.genotypes_of(parent)
    gts2 = variant_table.genotypes_of(co_parent)
    for i, var in enumerate(variant_table.variants):
        gt1 = gts1[i]
        gt2 = gts2[i]
        gt1v = gt1.as_vector()
        gt2v = gt2.as_vector()
        if gt1.is_none() or gt2.is_none():
            varinfo.append(None, None, 0, 0)
            continue
        # check homozygosity
        if gt1.is_homozygous():
            varinfo.append(gt1v[0], None, 0, 0)
            continue
        # count different alleles
        alleles_set = set()
        for gt in [gt1v, gt2v]:
            for a in gt:
                alleles_set.add(a)
        alleles = sorted(list(alleles_set))
        if len(alleles) > 2:
            # genotypes are not bi-allelic
            varinfo.append(None, None, 0, 0)
            continue
        assert len(alleles) == 2
        # determine majority allele and its multiplicity
        gt1v.sort()
        ref = gt1v[int(len(gt1v) / 2 - 1)]
        alt = gt1v[0] if gt1v[0] != ref else gt1v[-1]
        alt_count = sum([1 if a == alt else 0 for a in gt1v])
        co_alt_count = sum([1 if a == alt else 0 for a in gt2v])
        skip = False
        if not phasing_param.allow_deletions:
            if "*" in var.get_alt_allele_list():
                skip = True
        varinfo.append(ref, alt, alt_count, co_alt_count, skip)
    return varinfo