static void FindMissingAudio()
    {
        string            _search    = "ButtonClickAudio";
        List <ResultItem> listResult = TraverseAllPrefabsForComponent(_search);

        Debug.Log(string.Format("Found prefab items '{0}': {1}", _search, listResult.Count));

        foreach (ResultItem trans in listResult)
        {
            ButtonClickAudio _comp = trans.transform.gameObject.GetComponent <ButtonClickAudio>();

            if (_comp != null && _comp.audioClip == null)
            {
                Debug.Log(trans.transform.gameObject.transform.parent.gameObject + " is missing AudioClip in " + trans.path);
            }
        }

        listResult = TraverseAllScenesForComponent(_search);

        Debug.Log(string.Format("Found scene items '{0}': {1}", _search, listResult.Count));

        foreach (ResultItem trans in listResult)
        {
            ButtonClickAudio _comp = trans.transform.gameObject.GetComponent <ButtonClickAudio>();

            if (_comp != null && _comp.audioClip == null)
            {
                Debug.Log(trans.transform.gameObject.transform.parent.gameObject + " is missing AudioClip in " + trans.path);
            }
        }

        EditorApplication.MarkSceneDirty();
    }
    static void AddButtonClickAudio()
    {
        List <ResultItem> listResult = TraverseAllPrefabsForComponent("Button");

        Debug.Log(string.Format("Found prefab items '{0}': {1}", "Button", listResult.Count));

        foreach (ResultItem trans in listResult)
        {
            if (trans.transform.gameObject.GetComponent <ButtonClickAudio>() == null)
            {
                Debug.Log(trans.transform.gameObject + " is missing ButtonClickAudio in " + trans.path);

                ButtonClickAudio _audio = trans.transform.gameObject.AddComponent <ButtonClickAudio>();
                _audio.audioClip = Resources.Load <AudioClip>("Audio/Button");

                AssetDatabase.SaveAssets();
            }
        }

        listResult = TraverseAllScenesForComponent("Button");

        Debug.Log(string.Format("Found scene items '{0}': {1}", "Button", listResult.Count));

        foreach (ResultItem trans in listResult)
        {
            if (trans.transform.gameObject.GetComponent <ButtonClickAudio>() == null)
            {
                Debug.Log(trans.transform.gameObject + " is missing ButtonClickAudio in " + trans.path);

                ButtonClickAudio _audio = trans.transform.gameObject.AddComponent <ButtonClickAudio>();
                _audio.audioClip = Resources.Load <AudioClip>("Audio/Button");
            }
        }

        EditorApplication.MarkSceneDirty();
    }