private static void ShowAndSearchInternal(IEnumerable <Object> searchObjects, AssetUsageDetector.Parameters searchParameters, bool?shouldSearchChildren)
        {
            if (mainWindow != null && !mainWindow.ReturnToSetupPhase(true, true))
            {
                Debug.LogError("Need to reset the previous search first!");
                return;
            }

            OpenActiveWindow();

            mainWindow.objectsToSearch.Clear();
            if (searchObjects != null)
            {
                foreach (Object obj in searchObjects)
                {
                    mainWindow.objectsToSearch.Add(new ObjectToSearch(obj, shouldSearchChildren));
                }
            }

            if (searchParameters != null)
            {
                mainWindow.ParseSceneSearchMode(searchParameters.searchInScenes);
                mainWindow.searchInAssetsFolder           = searchParameters.searchInAssetsFolder;
                mainWindow.dontSearchInSourceAssets       = searchParameters.dontSearchInSourceAssets;
                mainWindow.searchInProjectSettings        = searchParameters.searchInProjectSettings;
                mainWindow.searchDepthLimit               = searchParameters.searchDepthLimit;
                mainWindow.fieldModifiers                 = searchParameters.fieldModifiers;
                mainWindow.propertyModifiers              = searchParameters.propertyModifiers;
                mainWindow.searchNonSerializableVariables = searchParameters.searchNonSerializableVariables;
                mainWindow.lazySceneSearch                = searchParameters.lazySceneSearch;
                mainWindow.noAssetDatabaseChanges         = searchParameters.noAssetDatabaseChanges;
                mainWindow.showDetailedProgressBar        = searchParameters.showDetailedProgressBar;

                mainWindow.searchInAssetsSubset.Clear();
                if (searchParameters.searchInAssetsSubset != null)
                {
                    foreach (Object obj in searchParameters.searchInAssetsSubset)
                    {
                        mainWindow.searchInAssetsSubset.Add(obj);
                    }
                }

                mainWindow.excludedAssets.Clear();
                if (searchParameters.excludedAssetsFromSearch != null)
                {
                    foreach (Object obj in searchParameters.excludedAssetsFromSearch)
                    {
                        mainWindow.excludedAssets.Add(obj);
                    }
                }

                mainWindow.excludedScenes.Clear();
                if (searchParameters.excludedScenesFromSearch != null)
                {
                    foreach (Object obj in searchParameters.excludedScenesFromSearch)
                    {
                        mainWindow.excludedScenes.Add(obj);
                    }
                }
            }

            mainWindow.InitiateSearch();
            mainWindow.Repaint();
        }