@Test
public void testCompHetAutosomalRecessiveFamily() {

    List<Allele> alleles = buildAlleles("A", "T");
    Genotype proband = buildUnPhasedSampleGenotype("Cain", alleles.get(0), alleles.get(1));
    Genotype brother = buildUnPhasedSampleGenotype("Abel", alleles.get(0), alleles.get(0));
    Genotype mother = buildUnPhasedSampleGenotype("Eve", alleles.get(0), alleles.get(1));
    Genotype father = buildUnPhasedSampleGenotype("Adam", alleles.get(0), alleles.get(0));
    VariantContext variantContext = buildVariantContext(1, 12345, alleles, proband, brother, mother, father);
    VariantEvaluation alleleOne = filteredVariant(1, 12345, "A", "T", FilterResult.pass(FilterType.FREQUENCY_FILTER), variantContext);
    List<Allele> alleles2 = buildAlleles("A", "C");
    Genotype proband2 = buildUnPhasedSampleGenotype("Cain", alleles2.get(0), alleles2.get(1));
    Genotype brother2 = buildUnPhasedSampleGenotype("Abel", alleles2.get(0), alleles2.get(1));
    Genotype mother2 = buildUnPhasedSampleGenotype("Eve", alleles2.get(0), alleles2.get(0));
    Genotype father2 = buildUnPhasedSampleGenotype("Adam", alleles2.get(0), alleles2.get(1));
    VariantContext variantContext2 = buildVariantContext(1, 12355, alleles2, proband2, brother2, mother2, father2);
    VariantEvaluation alleleTwo = filteredVariant(1, 12355, "A", "C", FilterResult.pass(FilterType.FREQUENCY_FILTER), variantContext2);
    Individual probandIndividual = Individual.builder().id("Cain").fatherId("Adam").motherId("Eve").sex(Sex.MALE).status(Status.AFFECTED).build();
    Individual brotherIndividual = Individual.builder().id("Abel").fatherId("Adam").motherId("Eve").sex(Sex.MALE).status(Status.UNAFFECTED).build();
    Individual motherIndividual = Individual.builder().id("Eve").fatherId("").motherId("").sex(Sex.FEMALE).status(Status.UNAFFECTED).build();
    Individual fatherIndividual = Individual.builder().id("Adam").fatherId("").motherId("").sex(Sex.MALE).status(Status.UNAFFECTED).build();
    Pedigree pedigree = Pedigree.of(probandIndividual, motherIndividual, fatherIndividual, brotherIndividual);
    InheritanceModeAnnotator instance = new InheritanceModeAnnotator(pedigree, InheritanceModeOptions.defaults());
    Map<SubModeOfInheritance, List<VariantEvaluation>> results = instance.computeCompatibleInheritanceSubModes(ImmutableList.of(alleleOne, alleleTwo));
    Map<SubModeOfInheritance, Set<VariantEvaluation>> expected = ImmutableMap.of(
            SubModeOfInheritance.AUTOSOMAL_RECESSIVE_COMP_HET, ImmutableSet.of(alleleOne, alleleTwo)
    );
    for (Map.Entry<SubModeOfInheritance, Set<VariantEvaluation>> entry : expected.entrySet()) {
        assertThat(expected.keySet().contains(entry.getKey()), is(true));
        List<VariantEvaluation> resultValue = results.get(entry.getKey());
        //In this case the order the results are returned in is not guaranteed by jannovar. Consider returning a Set in the first place?
        assertThat(entry.getValue(), equalTo(new HashSet<>(resultValue)));
    }
}