public ViewLibraryPepInfo AssociateMatchingPeptide(ViewLibraryPepInfo pepInfo, int charge, SrmSettingsDiff settingsDiff)
        {
            var key = pepInfo.Key;

            var settings = _chargeSettingsMap[charge];

            // Change current document settings to match the current library and change the charge filter to
            // match the current peptide.
            if (settings == null)
            {
                settings = _document.Settings;
                var rankId = settings.PeptideSettings.Libraries.RankId;
                if (rankId != null && !_selectedSpec.PeptideRankIds.Contains(rankId))
                {
                    settings = settings.ChangePeptideLibraries(lib => lib.ChangeRankId(null));
                }

                settings = settings.ChangePeptideLibraries(
                    lib => lib.ChangeLibraries(new[] { _selectedSpec }, new[] { _selectedLibrary })
                    .ChangePick(PeptidePick.library))
                           .ChangeTransitionFilter(
                    filter => filter.ChangePrecursorCharges(new[] { charge }).ChangeAutoSelect(true))
                           .ChangeMeasuredResults(null);

                _chargeSettingsMap[charge] = settings;
            }

            var nodePep = _matcher.GetModifiedNode(key, pepInfo.GetAASequence(_lookupPool), settings, settingsDiff);

            if (nodePep != null)
            {
                pepInfo.PeptideNode = nodePep;
            }
            return(pepInfo);
        }
        public ViewLibraryPepInfo AssociateMatchingPeptide(ViewLibraryPepInfo pepInfo, int charge, SrmSettingsDiff settingsDiff)
        {
            var key = pepInfo.Key;

            var settings = _chargeSettingsMap[charge];
            // Change current document settings to match the current library and change the charge filter to
            // match the current peptide.
            if (settings == null)
            {
                settings = _document.Settings;
                var rankId = settings.PeptideSettings.Libraries.RankId;
                if (rankId != null && !_selectedSpec.PeptideRankIds.Contains(rankId))
                    settings = settings.ChangePeptideLibraries(lib => lib.ChangeRankId(null));

                settings = settings.ChangePeptideLibraries(
                        lib => lib.ChangeLibraries(new[] { _selectedSpec }, new[] { _selectedLibrary })
                                  .ChangePick(PeptidePick.library))
                    .ChangeTransitionFilter(
                        filter => filter.ChangePrecursorCharges(new[] { charge }).ChangeAutoSelect(true))
                    .ChangeMeasuredResults(null);

                _chargeSettingsMap[charge] = settings;
            }

            var nodePep = _matcher.GetModifiedNode(key, pepInfo.GetAASequence(_lookupPool), settings, settingsDiff);
            if (nodePep != null)
            {
                pepInfo.PeptideNode = nodePep;
            }
            return pepInfo;
        }