public void QuickSearchForSuggestedAudioFile(AudioLibrary audioLibrary, AODLoadSheetRow previousLSR, AODLoadSheet parentLoadsheet)
        {
            //quick search 1st attempt (lookup if any prior row had identical qualities (aka hash) and shortcut to past results)
            foreach (AODLoadSheetRow pastLSR in parentLoadsheet.GetAODLoadSheetRows)
            {
                if (pastLSR.LoadSheetRowNumber >= _LoadSheetRowNumber)
                {
                    if (_QuickSearchNotePastLSR == "None")
                    {
                        _QuickSearchNotePastLSR = "No Hash Matches";
                    }

                    break;
                }

                if (_LoadSheetRowHash == pastLSR.LoadSheetRowHash) //identical past loadsheet row (exact replica repeat row)
                {
                    if (pastLSR.IsSuggestedAudioFileAssigned)
                    {
                        _IsQuickSearchActive = true;

                        _QuickSearchNotePastLSR = "Replica Match";

                        _Tokens = pastLSR.Tokens;

                        _SearchCollection = pastLSR.SearchCollection;

                        AssignSuggestedAudioFile();

                        return;
                    }
                    else
                    {
                        _QuickSearchNotePastLSR = "Past Suggested File Not Assigned";
                    }
                }
            }

            //quick search 2nd attempt (scan previous row's parent directory)
            if (!previousLSR.IsSuggestedAudioFileAssigned)
            {
                AODLoadSheetRow mostRecentAssignedRow = parentLoadsheet.GetMostRecentAssignedRow(this);

                if (mostRecentAssignedRow != null)
                {
                    previousLSR = mostRecentAssignedRow;
                }
            }

            if (previousLSR.IsSuggestedAudioFileAssigned)
            {
                string previousLSRSubDirPath = previousLSR.SuggestedAudioFile.SubDirectoriesPath;

                AudioLibrary quickSearchLibrary = audioLibrary.GetQuickAudioLibrarySubset(previousLSRSubDirPath);

                _SearchCollection = AudioFileSearch.GetBestSearchCollection(quickSearchLibrary, this);

                if (_SearchCollection.IsOptionQuickSearchElligible(_SearchCollection.BestOption, SearchMethodType.Both, Globals.HighAccuracyThreshold))  //high scoring and not too many options in final pool
                {
                    _IsQuickSearchActive = true;

                    _QuickSearchNotePreviousLSR = "Met HighAccuracyThreshold";

                    AssignSuggestedAudioFile();

                    return;
                }
                else
                {
                    if (_SearchCollection.BestOption.AccuracyScore < Globals.HighAccuracyThreshold)
                    {
                        _QuickSearchNotePreviousLSR = "Missed HighAccuracyThreshold";
                    }
                    else if (_SearchCollection.ChosenFinalPassCount > 1)
                    {
                        _QuickSearchNotePreviousLSR = "Missed TooManyFinalOptionsThreshold";
                    }

                    _SearchCollection = null;

                    return;
                }
            }
            else
            {
                _QuickSearchNotePreviousLSR = "Previous Suggested File Not Assigned";
            }
        }
        private void FullSearchForSuggestedAudioFile(AudioLibrary audioLibrary)
        {
            _SearchCollection = AudioFileSearch.GetBestSearchCollection(audioLibrary, this);

            AssignSuggestedAudioFile();
        }