public static void      RemovePath(int i)
 {
     UnityInstalls.LazyInitialize();
     UnityInstalls.installPaths.RemoveAt(i);
     UnityInstalls.UpdateUnityInstalls();
     UnityInstalls.Save();
 }
        public static void      SetPath(int i, string path)
        {
            UnityInstalls.LazyInitialize();

            if (i >= 0 && i < UnityInstalls.installPaths.Count)
            {
                UnityInstalls.installPaths[i] = path;
            }

            UnityInstalls.UpdateUnityInstalls();
            UnityInstalls.Save();
        }
        public static void      AddPath(string path = null)
        {
            UnityInstalls.LazyInitialize();

            if (path == null)
            {
                if (UnityInstalls.installPaths.Count > 0)
                {
                    UnityInstalls.installPaths.Add(UnityInstalls.installPaths[UnityInstalls.installPaths.Count - 1]);
                }
                else
                {
                    UnityInstalls.installPaths.Add(string.Empty);
                }
                UnityInstalls.Save();
            }
            else if (UnityInstalls.installPaths.Contains(path) == false)
            {
                UnityInstalls.installPaths.Add(path);
                UnityInstalls.UpdateUnityInstalls();
                UnityInstalls.Save();
            }
        }
        private static void     LazyInitialize()
        {
            if (UnityInstalls.installPaths == null)
            {
                try
                {
                    string rawPaths = EditorPrefs.GetString(UnityInstalls.UnityInstallPathsPrefKey);

                    if (string.IsNullOrEmpty(rawPaths) == false)
                    {
                        string[] paths = rawPaths.Split(UnityInstalls.Separator);

                        if (paths.Length > 0)
                        {
                            UnityInstalls.installPaths  = new List <string>(paths);
                            UnityInstalls.unityInstalls = new Dictionary <string, string>();
                            UnityInstalls.UpdateUnityInstalls();
                        }
                    }
                }
                catch (Exception ex)
                {
                    Debug.LogException(ex);
                }
                finally
                {
                    if (UnityInstalls.installPaths == null)
                    {
                        UnityInstalls.installPaths = new List <string>();
                    }
                    if (UnityInstalls.unityInstalls == null)
                    {
                        UnityInstalls.unityInstalls = new Dictionary <string, string>();
                    }
                }
            }
        }