private static void StartInstall()
        {
            Debug.Log($"UnityPackagesInstaller StartInstall {Queue.Count}");

            if (Queue.Count > 0)
            {
                UnityPackageData package = Queue.Dequeue();

                if (!Directory.Exists(package.installedPackageLocation))
                {
                    Debug.Log($"UnityPackagesInstaller Trying to install {package.packageName} {_packageLocation + package.pathToPackage}");
                    AssetDatabase.ImportPackage(_packageLocation + package.pathToPackage, false);
                }
                else
                {
                    Debug.Log($"{package.packageName} is exists in project");
                }
            }
            else
            {
                Debug.Log("UnityPackagesInstaller Queue.Count < 0");
                RemoveSubscribes();

                OnAllInstalled?.Invoke();
                OnAllInstalled = null;
            }
        }
        public static void Install(List <UnityPackageData> all, string packageLocation)
        {
            Debug.Log($"UnityPackagesInstaller Install {Queue.Count} // package location {packageLocation}");

            bool shouldStart = Queue.Count == 0;

            foreach (var toInstall in all)
            {
                if (!Queue.Contains(toInstall))
                {
                    Debug.Log($"UnityPackagesInstaller Added {toInstall} to queue");
                    Queue.Enqueue(toInstall);
                }
            }

            if (shouldStart)
            {
                Debug.Log($"UnityPackagesInstaller Install shouldStart == true");
                _packageLocation = packageLocation;

                AddSubscribes();
                StartInstall();
            }
            else
            {
                Debug.Log($"UnityPackagesInstaller Install shouldStart == false");

                OnAllInstalled?.Invoke();
                OnAllInstalled = null;
            }
        }