static public ProteinPositionPlus GetInstance(ProteinPosition proteinPosition, int nucleotide1Index, NucleotideIndexReference nucleotideIndexReference)
        {
            ProteinPositionPlus aProteinPositionPlus = new ProteinPositionPlus();

            aProteinPositionPlus.ProteinPosition          = proteinPosition;
            aProteinPositionPlus.Nucleotide1Index         = nucleotide1Index;
            aProteinPositionPlus.NucleotideIndexReference = nucleotideIndexReference;
            return(aProteinPositionPlus);
        }
        public int CompareTo(object y)
        {
            ProteinPositionPlus yProteinPositionPlus = (ProteinPositionPlus)y; //!!!raise error

            Debug.Assert(NucleotideIndexReference == yProteinPositionPlus.NucleotideIndexReference, "Must have the same reference organism");

            int compareNucleotideIndex = NucleotideIndexReference.CompareTo(yProteinPositionPlus.NucleotideIndexReference);

            Debug.Assert((compareNucleotideIndex == 0) == (0 == ProteinPosition.CompareTo(yProteinPositionPlus.ProteinPosition)));
            return(compareNucleotideIndex);
        }