private void RemovePlugin(PluginInfo plugin)
        {
            PluginsManifest.Instance.BeginRemoval(plugin);

            Repaint();

            PluginData data = PluginsManifest.Instance.GetPluginData(plugin);

            if (data == null)
            {
                return;
            }

            bool finishOnRecompile = false;

            foreach (string file in data.copiedFiles)
            {
                if (AssetDatabase.IsValidFolder(file))
                {
                    continue;
                }
                AssetDatabase.DeleteAsset(file);
                if (!finishOnRecompile && file.EndsWith(".cs"))
                {
                    Compile.OnFinishedCompile += FinishUninstalling;
                    finishOnRecompile          = true;
                }
            }

            data.installed = false;
            data.version   = 0;
            data.copiedFiles.Clear();

            EditorUtility.SetDirty(PluginsManifest.Instance);

            DefineSymbols.Disable(plugin.GetSymbols());

            AssetDatabase.Refresh(ImportAssetOptions.ForceSynchronousImport);

            Util.DeleteEmptyFolders();

            AssetDatabase.Refresh(ImportAssetOptions.ForceSynchronousImport);

            plugin.OnRemoved();

            Repaint();

            if (!finishOnRecompile)
            {
                FinishUninstalling(true);
            }
        }