static public ProteinPositionAndLength GetInstance(ProteinPosition proteinPosition, int length)
        {
            ProteinPositionAndLength aProteinPositionAndLength = new ProteinPositionAndLength();

            aProteinPositionAndLength.ProteinPosition = proteinPosition;
            aProteinPositionAndLength.Length          = length;
            return(aProteinPositionAndLength);
        }
        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);
        }
        //			string sProtein = proteinAndOffset.Substring(0,proteinAndOffset.LastIndexOf("+")); //!!!could raise error

        //int iAABase1 = int.Parse(proteinPositionStart.Substring(proteinPositionStart.LastIndexOf("+"))); //!!!could raise error
        //string.Format("{0}+{1}", sProtein, iBase1AminoAcidCount);

        public int CompareTo(object y)
        {
            ProteinPosition yProteinPosition = (ProteinPosition)y; //!!!raise error

            if (AminoAcidBase1 != yProteinPosition.AminoAcidBase1)
            {
                return(AminoAcidBase1.CompareTo(yProteinPosition.AminoAcidBase1));
            }

            return(Protein.CompareTo(yProteinPosition.Protein));
        }