public static void RemoveMenuItems(PrefabQuickaddDatabase database)
    {
        var className = string.Format("GeneratedMenuItems_{0}", database.name.Replace(" ", ""));
        var script    = string.Format("{0}/Scripts/Editor/Generated/{1}.cs", GetRootFolderPath(), className);

        File.Delete(script);
        File.Delete(string.Format("{0}.meta", script));
        AssetDatabase.Refresh();
    }
    /// <summary>
    /// Generate new cs file with MenuItem method for each database entry
    /// </summary>
    /// <param name="database"></param>
    public static void GenerateAddPrefabMenuItems(PrefabQuickaddDatabase database)
    {
        var rootFolder = GetRootFolderPath();

        Directory.CreateDirectory(string.Format("{0}/Scripts/Editor/Generated", rootFolder));

        var className        = string.Format("GeneratedMenuItems_{0}", database.name.Replace(" ", ""));
        var relativeFilePath = string.Format("{0}/PrefabQuickadd/Scripts/Editor/Generated/{1}.cs", GetRelativeToRootPath(), className);
        var script           = string.Format("{0}/Scripts/Editor/Generated/{1}.cs", rootFolder, className);

        StringBuilder sb = new StringBuilder();

        sb.AppendLine("// AUTO-GENERATED CLASS. DO NOT EDIT.");
        sb.AppendLine("// This is an automatically generated script, any changes made will be overwritten.");
        sb.AppendLine("using UnityEngine;");
        sb.AppendLine("using UnityEditor;");
        sb.AppendLine("");
        sb.AppendLine("public static class " + className);
        sb.AppendLine("{");

        // Write cs method code that will add the prefab to the scene
        var items = new List <PrefabQuickaddDatabase.PrefabQuickaddEntry>(database.Items);

        items.Sort((a, b) => string.Compare(a.Name, b.Name));
        for (int i = 0; i < items.Count; i++)
        {
            var item = items[i];

            if (item.Name == "")
            {
                Debug.LogWarning("Missing prefab name at index " + i);
                continue;
            }

            if (item.Prefab == null)
            {
                Debug.LogWarning("Missing prefab object for " + item.Name);
                continue;
            }

            var menuName = item.Name;
            if (database.Submenu != "")
            {
                menuName = string.Format("{0}/{1}", database.Submenu, item.Name);
            }

            sb.AppendLine("    [MenuItem(\"GameObject/Add Prefab/" + menuName + "\", false, priority = -1)]");
            sb.AppendLine("    private static void MenuItem" + i.ToString() + "()");
            sb.AppendLine("    {");
            sb.AppendLine("        var asset = (GameObject)AssetDatabase.LoadAssetAtPath(\"" + AssetDatabase.GetAssetPath(item.Prefab) + "\", typeof(GameObject));");
            sb.AppendLine("        var go = (GameObject)PrefabUtility.InstantiatePrefab(asset);");
            sb.AppendLine("        go.transform.SetParent(Selection.activeTransform);");
            sb.AppendLine("        go.transform.localPosition = asset.transform.position;");
            sb.AppendLine("        Selection.activeGameObject = go;");
            sb.AppendLine("    }");
            sb.AppendLine("");
        }

        sb.AppendLine("}");

        // Remove old file if there is one and reimport script
        File.Delete(script);
        File.WriteAllText(script, sb.ToString(), Encoding.UTF8);
        AssetDatabase.ImportAsset(relativeFilePath);
    }