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);
        }
        public int CompareTo(object y)
        {
            ProteinPositionAndLength yProteinPositionAndLength = (ProteinPositionAndLength)y; //!!!raise error

            int compareProteinPosition = ProteinPosition.CompareTo(yProteinPositionAndLength.ProteinPosition);

            if (compareProteinPosition != 0)
            {
                return(compareProteinPosition);
            }

            return(Length.CompareTo(yProteinPositionAndLength.Length));
        }