public static void Serialize()
        {
            try
            {
                // Allow Multiple Objects to be Selected.
                Object[] objects = Selection.objects;

                string             settingsFile       = "";
                ProjectDirectories projectDirectories = new ProjectDirectories();

                foreach (Object _object in objects)
                {
                    if (string.IsNullOrEmpty(settingsFile))
                    {
                        settingsFile =
                            EditorUtility.SaveFilePanel("Save Project Directory Structure", Application.dataPath,
                                                        $"project-directory-structure", "pdjson");
                    }

                    string objectPath = AssetDatabase.GetAssetPath(_object);

                    if (Directory.Exists(objectPath))
                    {
                        // Get All Folders and Subfolders.
                        string[] paths = Directory.GetDirectories(objectPath, "*", SearchOption.AllDirectories);
                        projectDirectories.Directories.AddRange(paths);
                    }
                    else
                    {
                        Debug.LogWarning("You have not selected a Folder!");
                    }
                }

                if (projectDirectories.Directories.Count > 0)
                {
                    string json = JsonUtility.ToJson(projectDirectories, true);
                    File.WriteAllText(settingsFile, json);
                    AssetDatabase.Refresh();
                }
                else
                {
                    Debug.Log("There are no Valid Directories to Serialize.");
                }
            }
            catch (Exception exception)
            {
                Debug.LogError(exception.ToString());
            }
        }
        /// <summary>
        /// Create Directories from a file at a path.
        /// </summary>
        /// <param name="path"></param>
        private static void CreateDirectories(string path)
        {
            string             json = File.ReadAllText(path);
            ProjectDirectories projectDirectories = JsonUtility.FromJson <ProjectDirectories>(json);

            projectDirectories.Directories.ForEach(directory =>
            {
                if (!Directory.Exists(directory))
                {
                    Directory.CreateDirectory(directory);
                    Debug.Log($"Created Directory: {directory}");
                }
            });
            AssetDatabase.Refresh();
        }