### Question:
MultiAlleleNucleotideVariant extends NucleotideVariant { @Override public String toHGVSString() { ArrayList<String> parts = new ArrayList<>(); parts.add(getRefIDWithVersion()); parts.add(":"); parts.add(seqType.getPrefix()); boolean first = true; for (NucleotideChangeAllele allele : alleles) { if (first) first = false; else parts.add(";"); parts.add(allele.toHGVSString()); } return Joiner.on("").join(parts); } MultiAlleleNucleotideVariant(SequenceType seqType, String refID, String proteinID, int transcriptVersion,
										Collection<NucleotideChangeAllele> alleles);  MultiAlleleNucleotideVariant(SequenceType seqType, String seqID, Collection<NucleotideChangeAllele> alleles); static MultiAlleleNucleotideVariant build(SequenceType seqType, String seqID,
													 NucleotideChangeAllele... alleles); ImmutableList<NucleotideChangeAllele> getAlleles(); @Override String toHGVSString(); @Override String toString(); @Override int hashCode(); @Override boolean equals(Object obj);  }### Answer:
@Test public void testToHGVSStringSingleChange() { Assert.assertEquals("REF:c.[100A>G;301A>C]", singleAlleleVariant.toHGVSString(AminoAcidCode.ONE_LETTER)); Assert.assertEquals("REF:c.[100A>G;301A>C]", singleAlleleVariant.toHGVSString(AminoAcidCode.THREE_LETTER)); Assert.assertEquals("REF:c.[100A>G;301A>C]", singleAlleleVariant.toHGVSString()); }
@Test public void testToHGVSStringMultiChange() { Assert.assertEquals("REF:c.[100A>G;301A>C];[34T>C;301A>G]", multiAlleleVariant.toHGVSString(AminoAcidCode.ONE_LETTER)); Assert.assertEquals("REF:c.[100A>G;301A>C];[34T>C;301A>G]", multiAlleleVariant.toHGVSString(AminoAcidCode.THREE_LETTER)); Assert.assertEquals("REF:c.[100A>G;301A>C];[34T>C;301A>G]", multiAlleleVariant.toHGVSString()); }